суббота, 6 декабря 2014 г.

sho/hide hidden files

defaults write com.apple.finder AppleShowAllFiles -boolean true ; killall Finder
or

defaults write com.apple.finder AppleShowAllFiles 1 &&  killall Finder



defaults write com.apple.finder AppleShowAllFiles -boolean false ; killall Finder

!!! this is not works!
defaults write com.apple.finder AppleShowAllFiles 0 &&  killall Finder

среда, 26 ноября 2014 г.

How to send push notification to Android phone (PHP)

Run this code on http://phpfiddle.org
<?php
define( 'API_ACCESS_KEY', 'AIzaSyCTcXRRgm7g3YuKxZU9w88KwtY2QIU4zSU' );
$registrationIds = array("APA91bHno1hY5_dBroaqhN0PKb5VEXvmF8hZ1Hzm8qsPL1zMnn3pzJbLDZXNj6qfXYjK3VGhU8Wo6saVqHc3PszWcKLlJB_CwxrCcB0t3rsPNz5JIZgu_HXh_T24SaF7tYI5q9dltVBSMGAFWaFb-QQdWPpvNgzLF2EWV48vb3Pc7mpmEtjAVrU" );

$msg = array
(
    'message'       => 'here is a message. message',
    'title'         => 'This is a title. title',
    'subtitle'      => 'This is a subtitle. subtitle',
    'tickerText'    => 'Ticker text here...Ticker text here...Ticker text here',
    'vibrate'   => 1,
    'sound'     => 1
);

$fields = array
(
    'registration_ids'  => $registrationIds,
    'data'              => $msg
);

$headers = array
(
    'Authorization: key=' . API_ACCESS_KEY,
    'Content-Type: application/json'
);

$ch = curl_init();
curl_setopt( $ch,CURLOPT_URL, 'https://android.googleapis.com/gcm/send' );
curl_setopt( $ch,CURLOPT_POST, true );
curl_setopt( $ch,CURLOPT_HTTPHEADER, $headers );
curl_setopt( $ch,CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch,CURLOPT_SSL_VERIFYPEER, false );
curl_setopt( $ch,CURLOPT_POSTFIELDS, json_encode( $fields ) );
$result = curl_exec($ch );
curl_close( $ch );

echo $result;
?>

суббота, 24 мая 2014 г.

Android studio: using Java7

Add into your build.gradle (section "android"):

compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }

четверг, 8 мая 2014 г.

Android: Using custom fonts for the ActionBar


private void setupFonts() {
        setupFont("action_bar_title", R.id.action_bar_title, "fonts/Roboto-Regular.ttf");
        setupFont("action_bar_subtitle", R.id.action_bar_subtitle, "fonts/Roboto-Regular.ttf");
    }

    private void setupFont(String idName, int targetId, String font) {
        int titleId = 0;

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
            titleId = getResources().getIdentifier(idName, "id", "android");
        } else {
            titleId = targetId;
        }

        if (titleId != 0) {
            TextView titleView = (TextView) findViewById(titleId);
            if (titleView != null) {
                titleView.setTypeface(Typeface.createFromAsset(getAssets(), font));
            }
        }
    }

вторник, 6 мая 2014 г.

Nexus 5: How to enable debug mode on your device:

To enable dev mode – go to Settings –> about phone and tap on Build number 8 times :) Nice joke, google! 
Next step – go to settings –> Developer tools.

Nexus 5. Лопата для извлечения денег.

Новый девайс. Не первый у меня на андроиде, но первый для меня из лопат. Так как девайс мне нужен в первую очередь для извлечения денег, то и требования к нему совсем не касаются эстетических характеристик, и не измеряются номером в таблице "тренды телефоностроения 2014":
– Экран с разрешением 1080x1920 (что в полтора раза больше, чем на моем компьютере – 1280х800);
– достаточное количество постоянной памяти (бывают проблемы, когда при частой переустановке приложения память просто заканчивается без видимых на то причин);
– чистейший андроид, не запачканный никакими сторонними сервисами (чем страдают другие производители, вроде Samsung или HTC).
С этим коротким списком я пошел в ближайший магазин "Все для кройки, шитья и программирования, ткнул пальцем в красный девайс, и отдал банковскую карточку менеджеру.

Вторая же цель у меня была личная (но опять же прагматическая): получить пользовательский опыт работы с приложениями, ведь по утверждению многих андроидоюзеров, от того андроида, от которого я плевался пять лет назад осталось не так много (я начинал с версии 1.5, и окончательно устал от тормозов и жора батареи, который не снился Windows Mobile 2003, к версии 2.3). Больше опыта – больше представлений о том, как это сделать.

Чек выписан, аппарат извлечен из коробки, и взят в руку. Симпатичненький на вид кирпичик форм-фактора "детская лопатка", по цвету напоминающий одну из последних в России моделей телефонов Motorola – EM30, в руке ощущается не очень комфортно. Он просто не лежит в руке, его несглаженные формы впиваются в ладонь, пальцы, что в состоянии не напрягаясь взять полторы октавы на рояле, не дотягиваются до кнопок. Требуется некая снаровка, чтобы научиться с ним обращаться. Будем надеяться, что я научусь, и сустав большого пальца перестанет болеть после пяти минут общения с.
Что до эстетических фенечек – удивление вызвали наклейки с IMEI номером, и какими то непонятными простому смертному символами. А вот приклеить наклейку с надписью "Цех №5, фасовщица №3" почему то забыли. На неказистого вида задней поверхности смотрится все это нелепо.
Зато в спартанском комплекте к телефону идет неплохой microUSB кабель, котрый не будет выдирать последний USB порт из моего драгоценного ноутбука трехлетней выдержки в качестве "боевой тачки".

Что до программно-аппаратной части – все оказалось довольно неплохо. Плавное рысканье по менюшкам, осмотр местных достопримечательностей в виде каких то ненужных мне программ от Google оставил приятное ощущение от работы девайса. Для разработки девайс оказался еще приятнее: большой экран позоляет не брать его в руки и не приглядываться, а высокая плотность пикселов позволяет работать с изображениями xxhdpi. Чистый андроид позволяет тестировать свои приложения на самых свежих версиях системы, и не бояться, что телефон после обновления превратится в кирпич (стройматериал).

Мое мнение: для личного пользования – обратите внимание на HTC One (в том числе HTC One mini), он дюже хорош визуально, и чертовски приятен на ощупь. Но не покупайте Nexus. Для работы эта формула справедлива с точностью до наоборот: девайса, лучше чем Nexus для девелопмента еще нет.



Цена вопроса $500.


...анекдот:
– Алло, вам удобно сейчас говорить?
– Нет, у меня Samsung Galaxy Note

вторник, 18 марта 2014 г.

osx and wi-fi

> Товарищи макодрочеры, у кого нибуть на ноуте был баг, когда по WiFi соединение пропадало и долго восстанавливалось, или помогало  sudo ifconfig en0 up/down ???
> Просто меня этот баг реально достал +(

у меня было из-за того, что макбучный вайфай периодически перетыкал диапазоны разрешённых каналов по информации 802.11d от точек. это распространённая проблема у них.
лечил так
http://wifi-mac.blogspot.ru/2013/03/80211d-macos.html
после этого ещё и 5 GHz точки стал видеть
http://wifi-mac.blogspot.ru/2013/03/mac-os-x-5.html

© @irkfap

вторник, 25 февраля 2014 г.

Groovy: NodeChild xml element to XML string


new groovy.xml.StreamingMarkupBuilder().bindNode(nodeChild) as String
Original post

Android: custom Toast

XML layout


<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/error_toast_background"
    android:gravity="center_vertical">

    <ImageView
        android:padding="@dimen/small_content_padding"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/toast_warning"/>

    <TextView
        android:id="@+id/toast_message"
        style="@style/FIS.Error.Toast"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/accept"/>
</LinearLayout>

Java


public static Toast createErrorToast(LayoutInflater inflater, Context context, String text) {

        Toast toast = new Toast(context);
        toast.setGravity(Gravity.TOP | Gravity.FILL_HORIZONTAL, 0, 0);
        toast.setDuration(Toast.LENGTH_LONG);

        View toastContent = inflater.inflate(R.layout.toast_content, null);
        assert toastContent != null;

        TextView message = (TextView) toastContent.findViewById(R.id.toast_message);
        assert message != null;

        message.setText(Html.fromHtml(text));

        toast.setView(toastContent);
        return toast;
    }