Если нельзя, но очень хочется, то нужно обязательно и ничего в мире не стоит того, чтобы делать из этого проблему!


Интересна Java? Кликай по ссылке и изучай!
Если тебе полезно что-то из того, чем я делюсь в своем блоге - можешь поделиться своими деньгами со мной.
с пожеланием
столько времени читатели провели на блоге - 
сейчас онлайн - 

вторник, 26 ноября 2019 г.

Антивандальная лампочка в подъезде

Сегодня сгорела лампочка в подъезде. Из соседей это никому не будет интересно, по прошлому опыту все будут ждать, чтобы им кто-то сделал хорошо: ЖЭК, мэр, президент, боги. 

Картинки по запросу "лампа в подъезде""

У меня есть LED лампочка, она хорошо себя отрекомендовала в подобных квестах (в смысле горит долго и не перегорает, как это делает лампа ильича). Но более чем уверен, что ее открутят все те же соседи в первую же пару дней. Как быть? 

Подсознание подкинуло идею с суперклеем. Так как патрон там копеечный, и висит как обычно на проводочке, то можно приклеить лампочку суперклеем прямо к нему. Пусть откручивают. Пока, конечно, не решу вопрос более качественно и с антивандальной защитой. Надеюсь, хоть не сорвут вместе с проводом. 

четверг, 14 ноября 2019 г.

Почему TDD дается сложно инженерам?

Полезно изучать несколько тем параллельно, ведь как раз на пересечении и рождаются самые интересные открытия. 

Три недели назад я публиковал пост на FB о критерии фальсифицироемости с научно-популярным объяснением от Veritasium. Пару дней назад мы обсуждали с коллегой старый добрый TDD подход. А на утро следующего дня повторяя эту чудную загадку от Veritafium в разговоре с другим коллегой, бам - инсайт. 

Проведи эксперимент над друзьями. Предложи раскрыть задуманную тобой закономерность, сообщать о которой ты можешь только отвечая true / false на три числа, которые по мнению отгадывающего должны соответствовать этой закономерности. В качестве вводной ты называешь 2, 4, 8 и говоришь, что эти числа соответствуют задуманной тобой закономерности. Дальше отгадывающий должен подумать и если у него есть идея что это за закономерность - предложить три числа, которые соответствуют ей. С него три числа, а с тебя true или false. Дальше на оригинальном видео (можно включить русские субтитры)



Что получается, большинство людей придумав гипотезу, сразу же стараются ее доказать. Видимо в этом by default поведении была какая-то потребность в процессе эволюционного развития мозга (а может и сейчас есть). Но такой подход приводит людей часто ко всяким лженаукам. Так гипотеза очень быстро превращается в теорию, если доказывать только ее правдивость или вскоре принять на веру. 

Люди чаще всего приводят доводы (тесты) чтобы подтвердить то знание (код), что у них есть в наличии. Это называется верифицировать (подтвердить) гипотезу. И это не сложно. Спроси у того, кто верит в гороскопы почему это правда и он тебе приведет тебе 1001 факт доказывающий это его знание. 

"Принцип фальсифицируемости противоположен принципу верифицируемости. При верификации гипотезы исследователь ищет подтверждающие её примеры, при фальсификации — примеры, опровергающие её." (с) Википедия

Чтобы все было по-научному, надо как минимум чтобы то что тобой придумано могло быть опровержимым экспериментально (или как-нибудь еще). То что очень большое число фактов подтверждает твою идею о том, как устроен мир, делает ее весьма вероятной, но не на 100% достверной. Достаточно всего лишь 1 опровергаюего факта, чтобы идею можно было отклонить как ложную. А вот это уже неприятно. Ведь то, что придумалось мной, такое мое, такое "правильное", а все кто не согласен с этим просто глупые, чтобы понять это. Так и носимся с идеей, как курица с яйцом. А могли бы откинуть сразу и заняться поисками чего-то по-настоящему рабочего. 

TDD как раз заставляет относиться к своему коду (твоей гипотезе, которая описывает желаемый заказчиком результат) как к чему-то скорее всего неполному и требующему доработки (недоделанные кейзы, ошибки в понимании ТЗ, ошибки в реализации, ошибки интеграции и т.д.). Ты пишешь тест, чтобы найти опровержение тому, что код работает. Тест красный - поздравляю, у тебя появился шанс улучшить реализацию. Если не можешь найти очередной красный тест - вероятно ты сильно приблизился к завершению. Сделай перерыв и попобуй после. 

Намного проще (по классике) написать быстро функционал и сделать 3-4 теста, подтверждающих что все-все работает. Именно так bu default мыслит наш мозг, и тесты будут зеленые. Только не факт что они вообше что-то проверяют. А если и проверяют, то всего лишь верифицируют твою гипотезу о том, как должен работать код, а надо гипотезу фальсифицировать

Кент Бек ввел критерий фальсифицируемости (критерий Поппера) в мир программирования из мира науки. Тот фильтр восприятия, благодаря которому можно больше и быстрее находить ошибки в умозаключениях. Такие частые...


С TDD Кент Бек привносит в кодирование научный подход. 

Бам!

вторник, 15 октября 2019 г.

Попался мошенникам на тему "письмо от регистратора доменных имен"

Недавно в почту попало письмо такого содержимого.
Dear CEO,(It's very urgent, please transfer this email to your CEO. If this email affects you, we are very sorry, please ignore this email. Thanks)
We are a Network Service Company which is the domain name registration center in China.
We received an application from Hua Hai Ltd on September 23, 2019. They want to register " ******** " as their Internet Keyword and " ******** .cn "、" ******** .com.cn " 、" ******** .net.cn "、" ******** .org.cn " 、" ******** .asia "domain names, they are in China and Asia domain names. But after checking it, we find " ******** " conflicts with your company. In order to deal with this matter better, so we send you email and confirm whether this company is your distributor or business partner in China or not?
 

Best Regards
**************************************
 
Mike Zhang | Service Manager
Cn YG Domain (Head Office)
No. 300, Xuanhua Road, Changning District, Shanghai200050, China
Tel: +86-2161918696 | Fax: +86-2161918697  | Mob: +86-1582177 1823
Web: www(dot)cnygdomain(dot)com(dot)cn
**************************************

Разделение git репозитория на два с сохранением истории

Привет!

Сегодня возникла интересная задачка, ее хочу сохранить на память, т.к. уверен, что буду неоднократно использовать ее в будущем. А блог мой - это записная книга.

Предыстория. Есть большой Codenjoy репозиторий со всеми проектами: сервер, игры, клиенты к играм, скрипты для запуска, воспомагательные скрипты и так далее. Есть сообщество контрибюторов, и они делают форки. Иногда в этих форках они что-то полезное фиксят. Мне это надо в моем master. Я прошу их предлагать пулриквесты, но часто в этих пулриквестах содержится много всякого разного, что мне не очень надо в master - скажем изменения правил и дизайна под ивент, фиксы с которыми я не согласен. А так как все делалось наспех (ивент готовится обычно в свободное от работы время), то естественно контрибьютор не работал с веткой и может предложить либо все либо ничего. А мне потом выбирать коммит за коммитом. Брррр...

Задача. Разделить проекты на подпроекты так, чтобы с одной стороны у меня была возможность одной git командой (clone, pull, log, commit, push) работать сразу со всеми проектами; а с другой - принимать только те Pull Request что мне надо фильтруя лишнее. Читать дальше...

среда, 5 июня 2019 г.

GTD на сегодня



Понятие инбокса в моем видении:
1)      Все каналы связи, почта, скайп, вкладки браузера, соцсети, файлы в папке, пулриквесты на гите, ветки в бранче... – должны быть пустые всегда, как у хирурга рабочий стол.
2)      Опустошать их стоит так редко (раз в день идеально), как это только возможно и так быстро как получится (< 10 минут).
3)      Ну и дальше по диаграмме:
a.       Это вообще надо делать? Какая ценность?
b.       Это точно должен делать я? Можно ли делегировать кому-то?
c.       Это можно сделать немедленно? Меньше 2х минут займет или залипну?
d.       Как все же не залипнуть?  
4)      Список «может быть как нибудь» удаляется раз в неделю или чаще, ведь:
a.       То, что важно тебе – ты вспомнишь
b.       То, что важно другим – они напомнят
5)      Ну и мониторинг каналов связи периодический. Если по этому каналу приходит постоянно «срочный» треш, а ценности 0 – значит в топку его.
a.       Как было в свое время с фейсбуком и его бесконечной лентой новостей. Отписался от всех и лента чиста – теперь только пощу туда и рекламу покупаю, так FB - очень даже ничего инструмент.
6)      А если уже надо сделать, но не хочется (мотивация 0), значит тут дело с лягушкой Глеба Архангельского. Тут помогает:
a.       Ведь это все равно это надо будет сделать, так лучше сейчас! Обычно чем дольше прокрастинировал, тем больше заряда получаешь съев лягушку.
b.       А это можно как-то капитализировать? Например так родилась эта статья, она была письмом другу и коллеге, а стала статьей.
Я не сильно эксперт J, случаются косяки. Но книга (вернее ее начало, я тоже не дочитал) в свое время очень упросила жизнь. 

понедельник, 3 июня 2019 г.

Завтра на их месте окажемся все мы...

...что для этого надо? Купить еще один новомодный гаджет или красивую шмотку, запакованных в количествах пластика больших, чем сама покупка. Упаковать это все в пластиковый мешочек. И через пару месяцев поломанным выкинуть на свалку с мыслью о том, что кто-то другой об этом обязательно позаботиться.


Привет в новом мире, где вскоре эволюция начнет свой путь с самого начала, бактерий которые приспособились.