Я достаточно активно работаю со всеми пуш провайдерами: apple, google, win, blackberry, даже, прости господи, nokia.
Из всех них, общение с apns дается сложнее всего. По сравнению с другими очень много неудобств:
— Нельзя узнать статус конкретного сообщения.
— 255 байт на все сообщение — это же прошлый век. Я хочу передавать больше данных в приложение
— Разрывы соединений просто разрывают мозг. Нельзя так делать. Это генерирует следующий пункт
— Нельзя после завершения отправки просто взять и закрыть соединение. Нужно еще сколько-то времени подождать. Вдруг APNS сам закроет соединение и нужно будет отправить что-то повторно?
У всех провайдеров есть какие-то ограничения и недостатки. Например у win и nokia нет возможности отправиьт пачку сообщений одним запросом. На каждый девайс отдельно. Blackberry любит говорить просто, что запрос принят на обработку. Статус сообщения получить можно, но геморно и за деньги, но это детали.
А ваш сервис куда-то выложен в паблик? Потыкаться можно?
2. Странно, в России и МТС, и Мегафон, и Билайн дают эту услугу бесплатно. У нас поток сообщений через это дело довольно обильный и пока что все нормально работает.
Плюс вашей системы в том, что, если захотеть, то можно начать звонить в случае полного краха. От смсок я, например, не просыпаюсь
Для закрепления всего могу подкинуть очень хорошую задачку на регулярные выражения — разбить одним выражением число на триады: 1234567 станет 1.234.567
А для себя в качестве упражнения как-то написал galaxy почти полностью на рэгэкспах. perl использовал только как средство ввода-вывода. Вся логика в регэкспах.
q — влево, w — вправо, проблел — стрелять. Есть один баг со смещением кораблей, но было лениво фиксить.
Вот код
#!/usr/bin/perl
use strict;
use warnings;
use Time::HiRes qw(usleep);
use Term::ReadKey;
$_ = "\33[2J\x33[HD<\n\33[2J\33[H+"."-" x 40 . "+\n|" . (" " x 10 . "x " x
10 . " " x 10 . "|\n|") x 5 . (" " x 40 . "|\n|") x 10 . " " x
19 . "^" . " " x 20 . "|\n+" . ("-" x 40) . "+";
my $i = 0;
while ( 1 ) {
s/^([^\n]+)\n(.*)/$2\n$1/s;
if ( $i == 5 ) {
s/(.*?) x(?=.*?D<)/$1X /sg;
s/(.*?)x (?=.*?D>)/$1 X/sg;
s/(\|X.*)D</$1Dv>/s;
s/(X\|.*)D>/$1Dv</s;
s/(?<=\-.{42})\./ /sg;
s/X(.{42})\./ $1 /sg;
s/X\./ /sg;
s/\.X/ /sg;
s/(?<=X.{42}) (?=.*Dv)/*/sg;
s/X(?=.{42}\*.*Dv)/ /sg;
s/(?<=X.{42}) (?=.*Dv)/*/sg;
s/X(?=.{42}\*.*Dv)/ /sg;
s/(?<=X.{42}) (?=.*Dv)/*/sg;
s/X(?=.{42}\*.*Dv)/ /sg;
s/(?<=X.{42}) (?=.*Dv)/*/sg;
s/X(?=.{42}\*.*Dv)/ /sg;
s/(?<=X.{42}) (?=.*Dv)/*/sg;
s/X(?=.{42}\*.*Dv)/ /sg;
s/\*/X/sg;
s/Dv</D</s;
s/Dv>/D>/s;
s/.*?X[^\n]+\n\| *\^.*/"\33[2J\33[HGame over"/es;
s/X/x/g;
}
s/(.*)\n([^\n]+)$/$2\n$1/s;
s/ (.{42})\./\.$1 /sg;
ReadMode 4;
my $key;
$key = ReadKey(-1);
if ( defined $key ) {
s/ (?=.{42}\^)/./sg if $key eq ' ';
s/\^ / ^/sg if $key eq 'w';
s/ \^/^ /sg if $key eq 'q';
}
ReadMode 0;
print $_,"\n";
s/Game over/exit()/e;
$i = 0 if $i++ == 5;
usleep (20000);
}
Не слабак, я же предмет осилил и сдал. Более того, еще немного потом пописал «для фана» на лиспе несколько несложных программ.
Просто если постоянно не пишешь на нем, то вникнуть очень сложно и занимает много времени.
Это примерно как некоторые считают перл write only языком.
Из всех них, общение с apns дается сложнее всего. По сравнению с другими очень много неудобств:
— Нельзя узнать статус конкретного сообщения.
— 255 байт на все сообщение — это же прошлый век. Я хочу передавать больше данных в приложение
— Разрывы соединений просто разрывают мозг. Нельзя так делать. Это генерирует следующий пункт
— Нельзя после завершения отправки просто взять и закрыть соединение. Нужно еще сколько-то времени подождать. Вдруг APNS сам закроет соединение и нужно будет отправить что-то повторно?
У всех провайдеров есть какие-то ограничения и недостатки. Например у win и nokia нет возможности отправиьт пачку сообщений одним запросом. На каждый девайс отдельно. Blackberry любит говорить просто, что запрос принят на обработку. Статус сообщения получить можно, но геморно и за деньги, но это детали.
А ваш сервис куда-то выложен в паблик? Потыкаться можно?
Плюс вашей системы в том, что, если захотеть, то можно начать звонить в случае полного краха. От смсок я, например, не просыпаюсь
А для себя в качестве упражнения как-то написал galaxy почти полностью на рэгэкспах. perl использовал только как средство ввода-вывода. Вся логика в регэкспах.
q — влево, w — вправо, проблел — стрелять. Есть один баг со смещением кораблей, но было лениво фиксить.
Вот код
Просто если постоянно не пишешь на нем, то вникнуть очень сложно и занимает много времени.
Это примерно как некоторые считают перл write only языком.
Функционального программирования мне, пожалуй, хватило еще при обучении.