Vulpo One

PHP 5.5 yield

Извращаюсь с новой игрушкой

<?php
$a = function () {for ($i = 0; $i < 10; $i++) yield $i;}; foreach ($a() as $i) echo $i; // 0123456789

Жаль, что не работает foreach ($a as $i) echo $i;, тогда можно было бы написать короче

<?php
foreach(function () {for ($i = 0; $i < 10; $i++) yield $i;} as $i) echo $i;

Или будь PHP похож на одного из своих предков, можно было бы

<?php
foreach((function () {for ($i = 0; $i < 10; $i++) yield $i;})() as $i) echo $i;

Даже извращения не работают типа

<?php
foreach((function () {for ($i = 0; $i < 10; $i++) yield $i;})->__invoke() as $i) echo $i;

Если кто не догнал, я пытаюсь сделать вот это:

(0..9).each { |i| print i }

Comments


Google Clusterfuck

Когда shit happens, shit обычно happens сразу массово, подумал я и чутьё меня не подвело. Гугл начал какое-то массовое непойми чё. К счастью, ко мне относилось только это:

CalDAV API после 16 сентября 2013 года будет доступен только для разработчиков из белого списка. Всем остальным разработчикам придется переключиться на использование Google Calendar API;

не зря я утащил оттуда свои календари :)

И вот еще круто:

Google сегодня «обрадовала» всех разработчиков приложений типа AdBlock вестью о том, что все их приложения заблокированы в соответствии с пунктом 4.4 Соглашения разработчика о распространении продуктов, который гласит:

Вы обязуетесь не совершать действий (включая разработку и распространение Продуктов), которые нарушают или прерывают работу устройств, серверов, сетей и других объектов и служб третьих сторон, включая пользователей Android, компании Google и операторов мобильной связи, а также наносят им другой ущерб. Запрещается использовать информацию о покупателях, полученную на Android Маркете, для продажи или распространения Продуктов вне Android Маркета.

Итак, под раздачу попали AdBlock Plus, AdFree, AdBlocker и другие. Понятное дело, что формально эти приложения действительно наносят вред инструментам монетизации приложений через рекламу, но шаг сам по себе не очень красивый. AdBlock для Firefox вроде работает как нужно, поэтому от рекламы в Интернете спастись можно.

Надо будет на всякий отрубить телефон от Google Play

Я даже перестал расстраиваться, что Samsung отказалась от ОС Android

Comments


Formfall

Вслед за Google Reader в /dev/null решил прогуляться Formspring

Сервис Formspring.me, запущенный в ноябре 2009 года, закрывается по причине необходимости огромных ресурсов для его работы. Об этом было объявлено в блоге компании 15 марта.

https://habr.com/ru/post/173011/

Эпидемия у них что ли?

Comments


Googless

Я регался на Gmail и Google+ когда это не было мейнстримом
— G. Christian Archer

Итак, с предстоящей смертью Google Reader пришлось искать ему замены. Нашел сразу три. Точнее, после отбора осталось 3 варианта — The Old Reader в духе Google Reader до изменений 2011 года, BazQux — платный, но умеющий всякие штуки типа подсасывания комментариев и третий вариант — возможность поднять на своем серваке Tiny Tiny RSS, который хоть и простенький, но умеет API, которым пользуется клиент Liferea (который тоже умеет тягать комментарии, но не переваривает категории TT RSS, кидая все подписки в кучу. ИЧСХ, с Google Reader он так не поступал) О результатах позже, щас я осваиваюсь со свеми тремя, благо все сжевали экспорт из Ридера — напишу что выбрал когда кончится триал BazQux.

Но встал и другой вопрос — а нужен ли мне вообще теперь Google? Незаменимых всё-таки у нас нет. Решил избавиться от гугла везде где возможно, прежде всего от Google Apps для домена sunchaser.info. Первым под нож пошел календарь. Т.к. веб-интерфейс для него мне в общем-то не нужен, он был заменен синхронизацией через Fruux (для календаря я юзаю Mozilla Thunderbird + Lightning), туда же отправилась и адресная книга.

С почтой сложнее — Яндекс я не очень хочу (мне не нравится как настраивается почта для домена), Windows Live не поддерживает IMAP — для меня это критично. Пришлось остановиться на Zoho Mail — лимит в 3 бесплатных аккаунта на домене оказался как раз. Хотя я не знаю что делать если потребуется 4-й :D

В итоге остались поиск гугла, синхронизация Chrome (но у меня всё равно основной браузер Firefox), инструменты вебмастера, остался сам Google Apps — в спящем состоянии, всё таки это старая Free Edition, на 50 аккаунтов — не выбрасывать же. Ну и телефон на Андроиде. Куда ж без него.

Comments



Напоминальщик Noty

Был раньше такой удобный напоминальщик — Noty, жил в джаббере по адресу noty@ximik.net. Т.к. он похоже то ли откинул копыта, то ли на него автор забил просто, решил поднять свою копию, благо он опенсорс. Живет на noty@sunhome.im, код взят с github.com/Ximik

Comments


Sheremetyevo Cheap

I need to find some food in this terminal. I’m hungry for an eternity.
— Commander Selene Shepard

Всё хотел с прилета из Праги написать про это открытие, но влом было.

Так вот, если вы застряли в Южном комплексе аэропорта Шереметьево (Терминалы D, E, F) и испугались тамошних цен, вам инфа: на 1 этаже Терминала F есть минимаркет 24 с минимальными наценками.

sheremetyevo-cheap

Магазин любезно подсказан работниками аэропорта. Схема взята с официального сайта

Comments


Adding Java Style

Оппа, оппа, Java Style

Что делает эта программа?

 1<?php
 2
 3use SimplePHPEasyPlus\Number\NumberCollection;
 4use SimplePHPEasyPlus\Number\SimpleNumber;
 5use SimplePHPEasyPlus\Number\CollectionItemNumberProxy;
 6use SimplePHPEasyPlus\Parser\SimpleNumberStringParser;
 7use SimplePHPEasyPlus\Iterator\CallbackIterator;
 8use SimplePHPEasyPlus\Operator\AdditionOperator;
 9use SimplePHPEasyPlus\Operation\ArithmeticOperation;
10use SimplePHPEasyPlus\Operation\OperationStream;
11use SimplePHPEasyPlus\Engine;
12use SimplePHPEasyPlus\Calcul\Calcul;
13use SimplePHPEasyPlus\Calcul\CalculRunner;
14
15
16$numberCollection = new NumberCollection();
17
18$numberParser = new SimpleNumberStringParser();
19
20$firstParsedNumber = $numberParser->parse('1');
21$firstNumber = new SimpleNumber($firstParsedNumber);
22$firstNumberProxy = new CollectionItemNumberProxy($firstNumber);
23
24$numberCollection->add($firstNumberProxy);
25
26$secondParsedNumber = $numberParser->parse('1');
27$secondNumber = new SimpleNumber($secondParsedNumber);
28$secondNumberProxy = new CollectionItemNumberProxy($secondNumber);
29
30$numberCollection->add($secondNumberProxy);
31
32$addition = new AdditionOperator('SimplePHPEasyPlus\Number\SimpleNumber');
33
34$operation = new ArithmeticOperation($addition);
35
36$engine = new Engine($operation);
37
38$calcul = new Calcul($engine, $numberCollection);
39
40$runner = new CalculRunner();
41
42$runner->run($calcul);
43
44$result = $calcul->getResult();
45$numericResult = $result->getValue(); // 2

Она вычисляет 1+1!!!

https://habr.com/ru/post/172119/

Comments