sam_dark

24 декабря 2018, Санкт-Петербург, Россия

# Понедельник 36 твитов

Hi, эту неделю с вами @musuk.
Full-stack .net/vue.js удалённый разработчик на Toptal. Написал несколько CMS на .Ne… twitter.com/i/web/status/1…

7:52

Поговорим про удалёнку, .net core, я поделюсь секретной методолгией GDD, расскажу несколько занимательных историй и… twitter.com/i/web/status/1…

7:55

У меня большой опыт работы в распределённых командах из офиса, а с 2013 года я работаю только удалённо. Возможно, м… twitter.com/i/web/status/1…

7:58

Если вы просто раздадите своим работникам ноутбуки и отправите их работать из дома, то скорее всего, у вас упадёт п… twitter.com/i/web/status/1…

8:04

Сложность 1. Прокрастинация и мотивация.
Большего умения концентрироваться и бороться с прокрастинацией.
Кто-то… twitter.com/i/web/status/1…

8:08
Writing room ! Could you be any more pretentious .. twitter.com/jk_rowling/sta…

Джоан Роулинг имеет writing room, что недавно вызвало батхёрт публики. twitter.com/arron_banks/st… Однако некоторые ид… twitter.com/i/web/status/1…

8:12

Мне в этом месте повезло: ребёнок дорос до садика, а жена сидит в другом углу комнаты и кодит на Котлине.

8:31

Когда у меня много отвлекающих факторов или надо сделать очень мерзкую задачу, я пишу TODO-листы. На бумажках.
Про… twitter.com/i/web/status/1…

9:23

Бумажки работают потому что:

9:28

Чем более муторная задача, тем мельче её нужно разбивать и планировать. В плоть до:

9:29

Если вы лид. То хорошо иметь такие списки для ваших людей: вы заранее продумываете, что и в какой последовательност… twitter.com/i/web/status/1…

9:37

Цель таких тудушек не заменять багтрекер, а сделать тактическое планирование следующих нескольких часов максимально простым и дешёвым.

10:16

Неопытного удалёнщика приходится "пасти" и "держать на коротком поводке". Постоянно спрашивая, как у него дела, пыт… twitter.com/i/web/status/1…

10:54

Вот эти пинки никому не нравятся. Потому, обычно, дальше, человек или ростёт, и сам начинает спрашивать, уточнять з… twitter.com/i/web/status/1…

10:55

Если если удалённый разработчик без пинка не катится, то это очень печально: пинать - это тяжёлая работа отнимает к… twitter.com/i/web/status/1…

10:56

В итоге, "Что-то сказать, на следующем Daily Meeting" - должна быть достаточная мотивация разработчику делать что-н… twitter.com/i/web/status/1…

10:56
@backendsecret перешел с удаленки в офис, вы просто себе не представляете, в офисе чем только не занимаются лишь бы… twitter.com/i/web/status/1…

Так и на удалёнке бывает на больших проектах. Где будь ты хоть трижды proactive, а если с той стороны бюрократическ… twitter.com/i/web/status/1…

11:48

Daily Meeting'и - хорошая штука и чтобы мотивировать разработчиков, и чтобы информировать команду об изменениях. Вм… twitter.com/i/web/status/1…

11:59

Однажды был работал с командой, где менеджер рассказывала, как она ездила отдыхать на острова и про то, что сериал… twitter.com/i/web/status/1…

12:04
@backendsecret Очень верно сказано про исполнителя, но хочется отметить, что повлиять на работника можно показывая… twitter.com/i/web/status/1…

Вторая проблема удалёнки - это сложность коммуникации. Тут важен и этикет и атмосфера в команде. Очень плохо, когда… twitter.com/i/web/status/1…

12:26

Стоит соблюдать хорошие практики переписки. Может, это очевидно, но этому приходится напоминать, даже синьёрам-поми… twitter.com/i/web/status/1…

12:30

2. Задавайте вопрос одним постом. Очень неприятно, когда на один вопрос нотификации идут одна за одной и телефон пр… twitter.com/i/web/status/1…

12:31

3. Сразу предлагайте варианты ответа на ваш вопрос. Возможно, они все плохие, но поможет коллеге лучше вас понять:… twitter.com/i/web/status/1…

12:33

4. Если пишите длинный пост, то сначала делайте короткое summary на 2 предложения. Потом уже detals с детальным опи… twitter.com/i/web/status/1…

12:37

Доступность (availability) - ещё один очень важный параметр коммуникации в удалённой команде.
Если разработчик сид… twitter.com/i/web/status/1…

13:36

Заниматься личными делами в рабочее время - это одно из преимуществ удалённой разработки. Поработать, когда дождь и… twitter.com/i/web/status/1…

13:37

Специально для этой цели в 2008ом году я купил себе Sony Ericsson K320i вместо Nokia 2300. Тогда мы общались с удал… twitter.com/i/web/status/1…

13:37

А однажды я отвечал на письма примерно вот здесь.
При скорости 7 узлов в бэйдвинд яхта идёт с таким хорошим креном. pic.twitter.com/9s13IjJx6i

13:40
@backendsecret Главное без экстрима) Разумный регламент со своими обоснованиями эффективности, но чтобы на людей не… twitter.com/i/web/status/1…

Хочется, чтобы люди разделяли ценности распределённой работы, о которых я пишу. Думали не только о своём процессе,… twitter.com/i/web/status/1…

16:20

Используйте картинки: Один скриншот со стрелочкой зменит сотни слов.
Я меняю html через dev.toolbar, чтобы показат… twitter.com/i/web/status/1…

16:41

ScreenToGif - прекрасная штука, чтобы показать неверное поведение.
screentogif.com pic.twitter.com/qiQP2kEc3X

16:45

А если нужен простой редактор со слоями, то я использую Firealpaca firealpaca.com

16:50

Как говорит Дмитрий Нестерук, IT - это довольно бедная индустрия. Потому скорее всего работодатель сэкономил на SSD… twitter.com/i/web/status/1…

17:40

Можно поставить себе три монитора, подымающийся эргостол. А вот если вы решите путешествовать, то вы всего этого ли… twitter.com/i/web/status/1…

17:44

Я несколько лет зимовал в Азии. И нормально сесть на стул мне удалось только в коворкинге в Куала-Лумпуре и когда я… twitter.com/i/web/status/1…

18:18

Если вам интересна тема организации процесса в команде удалёнщиков, то я советую следить за статьями Skyeng. Эти ре… twitter.com/i/web/status/1…

19:16

# Вторник 43 твита

Сегодня я расскажу про Toptal и об работе фрилансеру, как ИП.

7:24

Toptal - это платформа для фрилансеров. Toptal продаёт клиентам услуги фрилансеров из своей базы резюме.
В отличии… twitter.com/i/web/status/1…

7:27

Изнутри это выглядит, как обычный найм. Есть список вакансий, у вакансии есть рекрутёр. Вы апплаитесь на вакансии,… twitter.com/i/web/status/1…

7:31

"Элитность" фрилансеров достигается за высокого порога входа: нужно решить не очень простые алгоритмические задачи,… twitter.com/i/web/status/1…

7:34

Toptal делает 2 вещи: позволяет найти клиента и проксит платежи. Как вы будете работать с клиентом - это уже решае… twitter.com/i/web/status/1…

7:39
@backendsecret Сложное собеседование в топтал было? Там пишут что помимо собеседования еще и тестовое задание надо выполнить.

Оно не сильно сложное, если вы умете решать задачи с Codility и у вас есть технология написания приложений. Про "ин… twitter.com/i/web/status/1…

7:43

Клиент, кстати, может вас выкупить у Toptal и тогда вы можете работать с ним на прямую. Получить визу и уехать в ст… twitter.com/i/web/status/1…

7:47

Нытьё про пробный период я не разделяю. Это вроде испытательного срока. Да, за него могут не заплатить, если вы не… twitter.com/i/web/status/1…

7:50

Потому на собеседовании с клиентом вам расскажут про проект, ну может, спросят про ваш стек технологий.
Если начнут… twitter.com/i/web/status/1…

8:03

Один из главных минусов Toptal в том, что искать проект там можно довольно долго. Всё зависит от вашего стека. Кто-… twitter.com/i/web/status/1…

8:08
@backendsecret А можете что-нибудь рассказать про Upwork?
Какое-то время назад хотелось попробовать, но нашёл в сет… twitter.com/i/web/status/1…

Не работал с upwork. Upwork - это всё-таки биржа, там надо драться с индусами за пачку доширка. Плюс по документам… twitter.com/i/web/status/1…

8:11
@backendsecret Во! Значит все же есть некие документально-закрепленные обязательства. Правда не уверен, что это воо… twitter.com/i/web/status/1…
8:39
@backendsecret Ещё про Crossover расскажи )

Сам я на crossover не работал и даже не апплаился. Могу наврать, может, кто-то оттуда поправит. Как я понял, у них… twitter.com/i/web/status/1…

8:42

Говорят, что Crossover гарантирует занятость, но вроде, у них обязательно надо работать с записью экрана.

8:47
@backendsecret А в toptal как с записью экрана? С отчётностью, если почасовка не на фуллтайм?

Спасибо за вопрос
Топталеры обычно отказываются от проектов с трекером экрана. Типа мы достаточно молодцы и это нам… twitter.com/i/web/status/1…

9:08

Мне приходилось несколько раз сталкиваться с такой схемой:

9:11

Отчётность зависит от проекта. У меня на проекте считается, что я 8 часов в день работаю, а не на @backendsecret си… twitter.com/i/web/status/1…

9:13

Хозяйке на заметку:
Хотите разобраться с технологией? Вбиваете в поиск github "jogging app" и выбираете язык прогр… twitter.com/i/web/status/1…

9:44

Далеко не факт, что все эти решения привели автора на toptal, но это кладезь примеров использования разных технологии.

9:46
выглядит как испытательный срок, заёбовает как испытательный срок, то это, вероятно... ан нет, не испытательный сро… twitter.com/i/web/status/1…

Мне сложно говорить о Toptal в общем. На toptal много проектов, безусловно, есть и неадекватные клиенты. Топтал чес… twitter.com/i/web/status/1…

10:08

"Последняя зарплата - это та, которую вы не получили" - одна из золотых фраз в фрилансе.
В случае Toptal у вас ес… twitter.com/i/web/status/1…

10:11

У Toptal есть одна очень приятная вещь, как дружественное комьюнити. У нас есть чатик russia, где мы лампово обсужд… twitter.com/i/web/status/1…

10:43

Иногда мы собираемся на сходочки попить пива за счёт Toptal.
Локальные комьюнити самоорганизуются, а toptal это дв… twitter.com/i/web/status/1…

10:50

Фрилансерство - это зона победившего анархо-капитализма. У вас нет социальной защищенности, зато вы можете работать… twitter.com/i/web/status/1…

11:49

Зато тут всё равно женщина ты, негр, китаец-трансгумманист. От тебя требуется голова и пара пальцев. Какая разница… twitter.com/i/web/status/1…

11:49

Когда ты голос в скайпе, коммиты и текст в чатике, то культурные особенности становятся не так важны и воспринимают… twitter.com/i/web/status/1…

11:50

Моя жена - тимлид у двух правоверных саудитов, которые прерывают работу, чтобы помолиться. У них в стране женщинам… twitter.com/i/web/status/1…

11:51

Кстати, Toptal периодически пытаются клонировать, с небольшими изменениями, например, есть upstack.co

13:06

С Toptal разобрались. Теперь про то, как выводить деньги от иностранных заказчиков. По факту, единственный легальны… twitter.com/i/web/status/1…

13:12

Можно сколько угодно ругать правительство, но законы для ИПшек с каждым годом всё лучше и лучше.
Раньше работать с… twitter.com/i/web/status/1…

13:14

А теперь если забудешь оплатить патент, то ты не скатываешься на ОСНО, а просто становишься должен налоговой за патент.

13:15

Если будете читать статьи про работу с иностранными заказчиками, то читайте только самые свежее. Ибо раньше было мн… twitter.com/i/web/status/1…

13:16

Схема простая:

13:20

Со счёта ИП доллары можно продать, заплатить налоги, можно перевести их себе на счёт физ лица.

13:22

Если глубоко разбираться в каждом пункте, то там откроется целый мир. Куча споров, интересных историй и т.п.
Есть д… twitter.com/i/web/status/1…

13:26

Проблема в том, что по российским законам банки сами обязаны пресекать подозрительную деятельность. Ключевое слово… twitter.com/i/web/status/1…

13:30

Налоговая тоже может глюкнуть: просеять ваш платёж, выписать левый штраф. Но с налоговой, в отличии от банка, можно… twitter.com/i/web/status/1…

13:35

Во всех этих ИПшных делах надо помнить следующие принципы:

13:43
@backendsecret На всяких топталах таких рейтов для славов не найти, потому что бодишоп. И еще нужно всегда помнить,… twitter.com/i/web/status/1…

Soft skills, self confidence, уровень английского, а ещё удача.
Если есть время, можно поставить большой рэйт, под… twitter.com/i/web/status/1…

13:53
@otakahuynyaa @backendsecret Каждый раз, когда я думаю, что уже некуда стремиться, в ленте всплывает человек с часо… twitter.com/i/web/status/1…

Правило фриланса: всегда есть человек с большим рейтом.
Только возможны нюансы:

14:08

Есть ещё такой вопрос: А взяли ли бы меня на мой текущий хороший проект с большей зарплатой?
Кстати, на toptal есть… twitter.com/i/web/status/1…

14:12

Для справки, налоги - это не единственные расходы ИП.

17:31

4. В ПФР 1% от дохода свыше 300 000 на УСН, на Патенте будет фиксированная сумма. Например, 7000 для СПб.

17:34

# Среда 46 твитов

Сегодня я расскажу про .Net и node.js.

В 2013 году я ушёл из офиса и обнаружил, что модные ребята делают стратапы… twitter.com/i/web/status/1…

6:20

В то время был взрывной рост SPA и активное развитие Node.js. Библиотеки появлялись и забрасывались после двух комм… twitter.com/i/web/status/1…

6:22

Выбирать библиотеку приходилось с умом. Нужно было не только прочитать Redme на github, но и прочитать, отзывы. Поп… twitter.com/i/web/status/1…

6:25

Суть node.js в том, что весь ваш код выполняется в одном потоке внутри event loop.
А медленные IO операции, наприм… twitter.com/i/web/status/1…

6:27

Обычно блокировки в .Net коде мне были нужны были именно для IO операций. Например, при заполнении кэшей. А тут вы… twitter.com/i/web/status/1…

6:30

Писать на node.js до появления async/await было не очень приятно. Чтобы не завязнуть в callback hell я пытался испо… twitter.com/i/web/status/1…

10:05

Первое, что я стал использовать стал Flowy. Интересная либа позволяла описывать последовательность асинхронных вызо… twitter.com/i/web/status/1…

10:09

Потом в JS появились генераторы. В связке с bluebirdjs асинхронный код стало писать ещё приятнее.… twitter.com/i/web/status/1…

10:17

Сейчас в JS есть вполне человеческий async/await, так что код стал очень похож на C#. pic.twitter.com/eLRexONJ2x

10:21
@backendsecret Мне кажется вам неудобно было писать код на промисах только потому-что вы хотели писать на С# но в JS.

Делать ветвления на чистых промисах никогда не было удобно, просто это было удобнее, чем callback'и. Именно по этом… twitter.com/i/web/status/1…

10:27

До поддержки async/await успели развести огромный зоопарк. Все понимали, что асинхронность в node.js - это удобно и… twitter.com/i/web/status/1…

10:30

Я люблю развитый тулинг и всякие полезняшки. Думаю, что почти все любят сахар. Java-люди хорохорились: "Нам не нужн… twitter.com/i/web/status/1…

10:37
@backendsecret Вот вообще не вижу, чем это отличается от обычных цепочек promise'ов.

Сейчас проверил: Flowy - это не обёртка над промисами, а их альтернативная реализация. Тогда самая популярная библи… twitter.com/i/web/status/1…

11:21

В мире node всё менялось очень быстро, казалось бы, 4 года прошло, а теперь кажется, что нативная поддержка promise… twitter.com/i/web/status/1…

11:27

ASP.NET приложение крутится в IIS где есть ограниченное количество рабочих потоков. Если вы неаккур… twitter.com/i/web/status/1…

11:29

В node.js этой проблемы нет.
Многопоточность - это сложно, нет многопоточности - нет проблем.
Когда пишешь приложе… twitter.com/i/web/status/1…

11:32

Пока один сервер тянет нагрузку у вас всё хорошо. Потом что-нибудь придумаем с синхронизацией дерева объектов, если… twitter.com/i/web/status/1…

11:36

Тут на помощь приходят быстры хранилища, вроде Redis, или медленные, вроде MongoDB. На своём проекте я использовал… twitter.com/i/web/status/1…

11:39

Динамическая схема данных - это тоже прекрасно, когда проект растёт и быстро меняется. После MS SQL тулинг Mongo вы… twitter.com/i/web/status/1…

11:43

Самый адекватный UI для Mongo - это NoSQL Booster, он правда платный. nosqlbooster.com

11:50

Node.Js стал для меня реализацией принципа:
Write once, run anywhere
node.js отлично работает на Mac, Linux, Windo… twitter.com/i/web/status/1…

12:31

Для меня Node стала новым Perl на котором было так весело писать кросплатформенные консольные тулзы.
Не в обиду пит… twitter.com/i/web/status/1…

12:33

Node.js API можно прекрасно запускать на windows-серверах под IIS через iisnode
github.com/tjanczuk/iisno…

12:34

На Raspberry Pi можно запустить node.js web-сервер с помощью ngnix и pm2.
pm2 - это такой планировщик, который поз… twitter.com/i/web/status/1…

12:38

Кстати, для Raspberry PI очень много npm-пакетов для работы с железом:
GPIO - можно помигать светодиодом… twitter.com/i/web/status/1…

12:42
Sweet mother of God...
А ты о .net Core слышал что-нибудь? twitter.com/backendsecret/…

Да. Мой текущий проект на .net core.
Мой хитрый план рассказать про Node.js и сравнить его с dotnet.
Но dotnet - э… twitter.com/i/web/status/1…

12:57
@uncle_robot Потому что это зло :)
Ну для помигать ещё ладно, хотя это делается тупо одной командой и тащить ради э… twitter.com/i/web/status/1…

Чую эмбедщика.
Представьте, что вам надо пиноговать какой-то сервис и слать сообщение в телегу если он недоступен.… twitter.com/i/web/status/1…

13:05
@backendsecret А ещё Node действительно задал уровней "мейнстримного" ожидания того, как должен работать язык, окру… twitter.com/i/web/status/1…

Да, так и есть. NPM - это сила, особенно, когда они пофиксили глубокую вложенность пакетов в пакет. Windows от этог… twitter.com/i/web/status/1…

13:10

Раз уж мы коснулись малины. Raspberry Pi - это штука с самым низким порогом входа в программирование железяк.
Я за… twitter.com/i/web/status/1…

13:19

Думаю, если бы стартап не загнулся, то я бы туда притащил Typescript. Я недолюбливаю TS за то, что в нём вечно уста… twitter.com/i/web/status/1…

13:58

А ещё примеры кода в библиотеках на JS, и копипастить их оттуда неудобно. pic.twitter.com/miLY8DXgVT

14:00

Кстати, в Angular (не JS) проблемы с .d.ts нет, там код самого ангуляра, код библиотек, и код примеров пишут на Typ… twitter.com/i/web/status/1…

14:05

После Node.js я вернулся обратно на .Net Framework 4.5 писал мега-CMS для сайтов на Azure, (об этом я расскажу завт… twitter.com/i/web/status/1…

15:17

Я поглядывал на .net core 1.0, но там не было библиотек и царило торжество велоспедостроения.
Портировать либу с .… twitter.com/i/web/status/1…

15:19

Microsoft сделали спецификацию .Net Standard 1.0 и которой соответствовал .net core 1.x, но .net 4.5 умел намного б… twitter.com/i/web/status/1…

15:23

Если бы Microsoft забили на старый API, то жизнь в .Net Core была бы такой же унылой, как в ранней node, только уны… twitter.com/i/web/status/1…

15:26

Пошёл под нож мой любимый System.Drawing, которым я ресайзил картинки. Замену с переменным успехом пишут вот здесь:… twitter.com/i/web/status/1…

15:32
@backendsecret запоздалый кросплатформ в .net оставляет какие-то шансы ? или тренд негативный.

Говоря с людми, я слышу, что им нравится .net core и они начинают на нём проекты.
Благодаря .Net Standard 2.0 мы п… twitter.com/i/web/status/1…

15:37

На счёт тулинга в .net
Раньше у нас была только 32битная Visual Studio и только под Windows. (SharpDevelop - ну это… twitter.com/i/web/status/1…

15:45

Теперь JetBrains выпустили Rider на базе Idea.
А Microsoft выпустили VS Code на Atom.

А старая-добрая VS стала т… twitter.com/i/web/status/1…

15:48

ASP.NET Core сильно перепилили. Теперь у него та же идеология, что и у Express.js Просто посмотрите… twitter.com/i/web/status/1…

17:39

ASP.NET MVC устанавливается отдельным middleware.
app.UseMvc()
нужен Cors?
app.UseCors()

MS даже… twitter.com/i/web/status/1…

17:44

Хостить всё это счастье можно где угодно также, как node.js
Та же идея встроенного HTTP-сервера. Дефолтный сервер K… twitter.com/i/web/status/1…

17:50

Можно сказать, что .Net Core отвязан от Windows и Azure.
Однако MS надеется, что благодаря более широкой аудитории… twitter.com/i/web/status/1…

18:04
@backendsecret @CuredPlumbum JS норм в роли фронт-сервера, маленького фронта и любой другой крайне простой штуки, к… twitter.com/i/web/status/1…

Раз зашла речь про сам JS, то посоветую отличную книжку Ильи Кантора @iliakan про JavaScript.… twitter.com/i/web/status/1…

22:51
Привет @backendsecret . У нас новый проект и мне нужно изучить .net core. Что посоветуешь? Литература, курсы, иные ресурсы? Спасибо!

Долго думал я над ответом на этот вопрос но ничего лучше, чем
docs.microsoft.com/ru-ru/dotnet/c… -- официальное руководство (е… twitter.com/i/web/status/1…

23:48

# Четверг 29 твитов

Сегодня поговорим про логирование ElasticSearch и мониторинг приложений.

Вы пишите ваш бэкенд, придумываете хитрые… twitter.com/i/web/status/1…

7:56

Grafana способна визуализировать данные с самых разных источников: ElasticSearch, Postgresql, Prometheus, MySQL и д… twitter.com/i/web/status/1…

8:00

Про Grafana, не так много чего можно сказать, кроме того, что она есть, она очень расширяема и там есть автодополне… twitter.com/i/web/status/1…

8:13
@backendsecret У эластиков свой продукт есть, Kibana, который еще более заточен под ElasticSearch и визуализацию/мониторинг сложных данных

Kibana хороша для анализа того, что лежит в Elastic, но Grafana может показывать очень разные метрики из разных ист… twitter.com/i/web/status/1…

8:18
@backendsecret Кстати, тема! У меня был график mrtg на первом слайде питч-дека, и первый инвестор дал нам $1.4mln,… twitter.com/i/web/status/1…
8:23

Вдогонку менеджерская мудрость: "Если разработчик смотрит на Performance monitor" - то ему нечем заняться.

8:29
@backendsecret @AntiPasha ES уже давно умеет метрики. У EKL целый набор *beats* для сбора метрик. Если все собирать… twitter.com/i/web/status/1…

У Metricbeat идеалогия запихивать все метрики в Elastic, чтобы потом работать с этими данными, как с данными ES. От… twitter.com/i/web/status/1…

8:52

Очень правильно напомнить, что есть ещё и Metricbeat
Чем больше годных инструментов, тем лучше.

8:55

Метрики в коде очень помогают для диагностики проблем. Например, вот этот график количества проиндексированных доку… twitter.com/i/web/status/1…

9:58

Значения счётчиков из приложения удобно складывать в time series database: InfluxDB, Prometheus и другие
Складывать… twitter.com/i/web/status/1…

10:06

На моём текущем проекте мы используем Prometheus. Очень удобная штука, написана на GO, ставится в 3 тыка. Сама опра… twitter.com/i/web/status/1…

10:17

Собирать метрики в Elastic - это хорошо, но нужно понимать, что elastic сам довольно капризная штука. Он сам на это… twitter.com/i/web/status/1…

10:22
@yaroslavm @backendsecret @AntiPasha filebeat самый первый из линейки beats и разрабатывается с 2015 года. Он хорош… twitter.com/i/web/status/1…
10:31
@backendsecret Пром сам вроде не опрашивает ни чего, опрашивают экспортёры и передают это в пром
10:50
@backendsecret Он не капризный) elastic рассчитан на запуск в кластере, но можно single-mode. Для перфоманса он при… twitter.com/i/web/status/1…

Я больше про надёжность ES. Инстансы Elastic дохнут редко, но могут сдохнуть в самый неподходящий момент. У меня E… twitter.com/i/web/status/1…

11:14

Elastic - это schemaless database. И в принципе, логи в неё можно писать напрямую прямо из приложения в виде объект… twitter.com/i/web/status/1…

12:00

Хранение логов хорошо вспоминать в спорах SQL vs noSQL. Логи обычно schemaless. Когда раньше логи писали в базу, то… twitter.com/i/web/status/1…

12:06

Очень удобно, когда библиотека логирования поддерживает LogContext, который дополняет ваш
Log.Error(e) информацией… twitter.com/i/web/status/1…

12:22

В .net core очень популярна библиотека Serilog. Которая умеет не только LogContext, но и поддерживает логирование с… twitter.com/i/web/status/1…

12:23

Elastic Search - это не только штука для сбора логов. Но и довольно мощная система полнотекстового поиска. Думаю, э… twitter.com/i/web/status/1…

13:22

Когда ES индексирует текст поля документа, то он разбивает текст на токены и индексирует уже их.
Когда ES ищет фраз… twitter.com/i/web/status/1…

13:22

Анализаторы могут быть разные, их можно настраивать. По умолчанию, анализатор ES разбивает текст по пробелам. В ана… twitter.com/i/web/status/1…

13:24

Одно поле документа можно проиндексировать несколькими анализаторами и потом искать по разным индексам с разным ран… twitter.com/i/web/status/1…

13:26

Анализатору Elastic'а можно давать словарь синонимов, так что он будет воспринимать как одно и то же, например, col… twitter.com/i/web/status/1…

13:36

У ElasticSearch очень мощный REST API. Он поддерживает несколько типов поисковых запросов:

16:32

3. Full text search. они же match. Выглядят, как большие JSON в котором query обрабатываются анализатором.
Эквивале… twitter.com/i/web/status/1…

16:39

4. Уровень Term'ов, там анализатор для поискового запроса уже не работает. Вы найдите только по тем токенам, которы… twitter.com/i/web/status/1…

16:43

5. Span запросы. Хитрые "низкоуровневые" запросы позволяют делать запросы вроде: "между словом xiaomi и словом phon… twitter.com/i/web/status/1…

16:59
@backendsecret Multi-word synonyms, suggestions работает сходу фактически (ну или я нуб в ES, звиняйте)

В ES есть suggestions и Multi-word synonyms называются
synonym_graph, но вот насколько ими проще пользоваться в ES… twitter.com/i/web/status/1…

18:03

# Пятница 32 твита

Сегодня день будет про Content Managemement Systems (CMS) на .Net. Думаю, эта информация может быть полезна даже те… twitter.com/i/web/status/1…

8:01

В мире PHP есть довольно много бесплатных CMS с кучей модулей, в мире .Net с этим всегда было туго. По факту, все п… twitter.com/i/web/status/1…

8:03

В мире .net компании-вендоры пишут свои CMS, и продают их web-студиям, а уже web-студии делают сайты.
Иногда комп… twitter.com/i/web/status/1…

8:04

Казалось бы CMS - это очень простая штука:

8:07

Настраиваться и расширяться должно всё: шаблон страницы, структура данных. Желательно, чтобы всё настраивалось прям… twitter.com/i/web/status/1…

8:10

Если хотите сделать свою систему сложной, вот чеклист:

8:12

В итоге, CMS становились монстрами, которые простой список новостей рендерили 600ms И это считалось нормально. Чтоб… twitter.com/i/web/status/1…

8:14

Нормальным подходом было использовать CMF - CMS, которая конфигурируется программистом, а не админом сайта через UI… twitter.com/i/web/status/1…

8:19

По-хорошему CMS - это такой очень высокоуровневый web framework, который позволяет решать бизнес-задачи клиента: де… twitter.com/i/web/status/1…

8:40

Похоже, я не очень хорошо выразил мысль про компании вендоры. На рынке .Net CMS господствуют компании с большими до… twitter.com/i/web/status/1…

9:28

Кстати, Orchard CMS был спонсирован Microsoft именно, чтобы поддержать бесплатную .Net CMS, которая бы встала на самый дешёвый тариф Azure.

9:32

Как я сказал, CMS очень сложные из-за гибкости. Тогда ребята решили написать Orchard очень гибкой CMS с "правильной… twitter.com/i/web/status/1…

9:40

Первая OrchardCMS вышла в 2011, первая которая не тупила где-то в 2013ом. Потом создатели Orchard стали забивать на… twitter.com/i/web/status/1…

9:47

Причина фэйла Orchard'а, на мой взгляд, заключается в том, что создатели Orchard сами не делали сайты на своей сист… twitter.com/i/web/status/1…

9:50

На кой-то чёрт, ребята потащили идеологию из Orchard CMS в Orchard Core, вместо того, чтобы начать новую жизнь под… twitter.com/i/web/status/1…

9:57

Для гибкости, CMS обычно имеют хранилище данных с динамической схемой. Но из-за популярности SQL-баз, создатели CMS… twitter.com/i/web/status/1…

10:41

Например, в wordpress для этого есть две таблицы
wp_posts - это "документы"
wp_postmeta - это поля документов. key… twitter.com/i/web/status/1…

10:43

Для реализации гибкой схемы можно пойти такими путями:

10:46

И здесь мы подходим к главному вопросу мира CMS: "Почему CMS тупят?"
Суть в том, что страница состоит из блоков, ко… twitter.com/i/web/status/1…

10:50

Особенно тяжко главной странице сайта где обычно больше всего блоков. Блок новостей загружает новости, у каждой нов… twitter.com/i/web/status/1…

10:54

При динамической схеме вы либо делаете кучу Join'ов, либо занимаетесь десериализацией. Что делает доступ к базе ещ… twitter.com/i/web/status/1…

10:55

Если блок не зависит от сессии юзера, то почему бы не сохранить в память HTML, который этот блок рендерит?
В итоге,… twitter.com/i/web/status/1…

10:58

Забавная вещь: для Sitecore CMS есть GlassMapper - это штука, которая мэпит данные из хранилища Sitecore на ваши C#… twitter.com/i/web/status/1…

11:27

Модули и возможность расширения CMS - это очень важно.
Я был как пользователем CMS со стороны студии, так и работа… twitter.com/i/web/status/1…

12:07

API CMS - это то место, где Unit-тесты оправданы и необходимы. Покрывайте всё, что можете покрыть. Продумывайте пуб… twitter.com/i/web/status/1…

12:09

Одни из огромных фэйлов OrchardCMS был как раз в плохой поддержке модулеписателей. Поменять публичный API и сломать… twitter.com/i/web/status/1…

12:11

В последней web-студии, где я работал мы делали проекты на Orchard и Sitecore. Однако мы понимали, что для малых ил… twitter.com/i/web/status/1…

13:34

Мы решили написать не универсальную CMS, а CMS с фиксированной схемой данных. Эта система брала файла со спецификац… twitter.com/i/web/status/1…

13:35

Если спецификация структуры данных менялась, то генерировался скрипт обновления данных. Мы размахнулись настолько,… twitter.com/i/web/status/1…

13:37

В итоге, генерённые CMS работали практически также быстро, как если разрабатывались с нуля. Мы боялись, что проект… twitter.com/i/web/status/1…

13:45

Свой язык конфигурирования мы писали с помощью библиотеки Irony. Net Библиотечка делалась ещё для старого .Net, но… twitter.com/i/web/status/1…

13:54

Другими словами, если вам нужно создать что-то очень гибкое, то, возможно, будет проще убрать всю гибкость в кодегенерацию.

15:53

# Суббота 31 твит

Сегодня настоящая пятница, а значит никто не помешает мне завтра выпускать новогодний релиз.
Так что сегодня предс… twitter.com/i/web/status/1…

7:27

Full stack web developer'ы бывают двух видов:

7:43

Раньше я довольно хорошо разбирался в AngularJS, понимал, как на нём писать и мне было хорошо. Но AngularJS останов… twitter.com/i/web/status/1…

7:47

Когда я выбирал фреймворк я просто пытался написать приложение "правильно" с точки зрения фреймворка. (React не фре… twitter.com/i/web/status/1…

7:49

В общем, у Vue оказался низкий порог входа. Плюс он способен помочь, когда надо, например, сделать маленький виджет… twitter.com/i/web/status/1…

7:53

Однако у Vue есть и мощная инфраструктура для сборки и построения SPA. Оно очень похоже на Angular-cli, и тоже есть… twitter.com/i/web/status/1…

8:08

У Vue есть очень качественные гайдлайны и мануалы. Где разбираются варианты использования.
У Vue есть реализация F… twitter.com/i/web/status/1…

8:22

Для меня в Vue самым сложным было понять что пихать в Vuex, а что нет. Я разговаривал с разными людьми, многие сове… twitter.com/i/web/status/1…

8:27

Для Vue есть прекрасная штука: Vuetify - это готовый тулкит для построения админок и типовых фронтендов. Можно вооб… twitter.com/i/web/status/1…

8:46

Пока вы не ушли на корпоративы и досылаете последние в 2018 году коммиты. Я представляю вам методологию GDD:
Govno… twitter.com/i/web/status/1…

9:50

Метод нужен для того, чтобы разбираться неопределенностью в желаниях конечного пользователя, требованиях к технолог… twitter.com/i/web/status/1…

9:52

GDD-манифест:

9:53

4. Вы осознаете, что говнокод - это говнокод, его не нужно делать сопровждаемым. Ваш перфекционизм здесь не нужен.… twitter.com/i/web/status/1…

9:56

Говнокод + рефакторинг говнокода - это альтернатива крутой и дорогой архитектуре, которая оказалась частично беспол… twitter.com/i/web/status/1…

9:58

Когда мы делали кодегенератор CMS у нас не было понимания ни что мы хотим написать, ни как это писать правильно.
Пе… twitter.com/i/web/status/1…

10:00

Следующую версию этой системы мы смогли выкатить только через 3 месяца. Причина была в том, что версия 1 была практ… twitter.com/i/web/status/1…

10:01

Есть проекты, в которых очень сложно сразу сказать, какой должна быть архитектура проекта. GDD позволяет провести р… twitter.com/i/web/status/1…

10:05

Цикл GDD выглядит так:

10:06
@backendsecret Ты это сейчас без шуток? Может книгу про это напишешь? Я куплю и прочитаю! Я сам так делаю, но всегда этого стеснялся...

А и правда, мне 33 самое время чего-нибудь проповедовать, наберу апостолов, буду ездить по конференциям как… twitter.com/i/web/status/1…

10:13

GDD можно применять, как для всего продукта, так и для разработки конкретного метода.
Многие IDE поддерживают комм… twitter.com/i/web/status/1…

10:24

На говнокоде далеко не уедешь и однажды вы просто не сможете реализовать нужную фичу из-за тех.долга. Нужно будет п… twitter.com/i/web/status/1…

10:33

2. YAGNI (You aren't gonna need it) - принцип XP, который отлично применим в GDD. В говнокоде не нужно ничего делат… twitter.com/i/web/status/1…

10:33

3. Тесты должны быть максимально несвязаны с реализацией, иначе у вас велик шанс вместе с говнокодом выкинуть и тес… twitter.com/i/web/status/1…

10:35

4. Для говнокода я предлагаю использовать ООП очень и очень ограничено и по-сути использовать процедурный подход ра… twitter.com/i/web/status/1…

10:38

5. Избегайте наследования. Говнокод расползается по иерархии классов, как пожар. Говнокод в родителе - горе потомкам.

10:41

6. God Object - полезная вещь, поскольку позволяет нам не тратить время на разделение одной сущности на много мелки… twitter.com/i/web/status/1…

10:42

7. Dependency Injection очень полезна для говнокода, ибо кроме получения сервисов в конструкторе. DI контейнеры поз… twitter.com/i/web/status/1…

10:47
@backendsecret Vuex наследует идеологию от Redux. Поэтому пихать все в vuex категорически нельзя. Т.к vue используе… twitter.com/i/web/status/1…
10:56

Ещё один кейс применения GDD: У нас было несколько террабайт данных из разных источников и мы совершенно не понимал… twitter.com/i/web/status/1…

11:16

Клиенты довольно не были, но они смогли сформулировать, что именно им не нравится. А мы получили данные о производи… twitter.com/i/web/status/1…

11:17
@backendsecret Это типичное прототипирование с тестами на живых пользователях, но аббревиатура GDD мне нравится!

На самом деле совсем не обязательно это даже выкладывать на продакшен. Можно сначала сделать как-то, чтобы самому… twitter.com/i/web/status/1…

13:45

# Воскресенье 1 твит

Эту неделю с вами был @musuk
Спасибо за вопросы, лайки и комментарии.
Зелёных билдов и интересных проектов вам всем в следующем году!

13:51

other