Єкстраполяція AI – Telegram
Єкстраполяція AI
2.39K subscribers
97 photos
27 videos
315 links
Канал про штучний інтеллект, айті вцілому та про програмування зокрема.

На каналі оголошено військовий стан тому реклама за донат, пишіть мені @aratak і грощі сюди https://send.monobank.ua/jar/97f7LwGQJF
Download Telegram
Ревью пулл реквеста нужно глобально только по двум причинам: с целью улучшения техники или стратегии. Техника — это когда Фаулер доволен и тесты быстры и зелены, а стратегия — это когда код готов к глобальным изменениям, неожиданным капризам клиентов и внезапным пиковым нагрузкам не там, где подстелили соломки.

Логично, что обсуждение стратегии должно предшествовать изменениям в коде, а технические неисправности с закрытыми глазами можно исправлять и после. Черт побери, обсуждать глобальные изменения архитектуры после пулл реквеста — это значит, что время на пулл реквест было потрачено впустую и надо все переделывать. А вот технические ошибки можно бы и самому проверить — отсматривать свои собственные пулл реквесты перед тем, как кому-то их показывать, очень полезное дело.

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

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

А решение у проблемы достаточно элегантное. У задачи должно назначаеться не один исполнитель, а два. Один делает, другой командует. Прежде чем начать выполнять, командир и исполнитель обсуждают решение, командир принимает стратегическое решение, исполнитель его делает, командир принимает. Ответственность, вроде бы, точно так же распределяется, как и при классическом ревью пулл реквеста, только в механике парной работы это не просто формальные правила, а естественные условия работы.

Конечно же, современные команды состоят сплошь из профессионалов и считается, что все более-менее равны как по правам, так и по интеллектуальным способностям, поэтому количество ролей «командир» и «исполнитель» у каждого разработчика должно выходить приблизительно поровну. В итоге окажется, что в половине случаев каждый разработчик выступает исполнителем, а во второй — командиром.

Опять же, «исполнитель» вовсе не означает, что тварь он дрожащая и просто на кнопочки нажимает, вовсе нет. Обсуждения, аргументации и доводы должны быть с обеих сторон. Но окончательное решение должно быть за командиром.
👍6🤔3👎1
В телеграме работа с публичными каналами кардинально отличается от привычных площадок. В ютубе, например, все блоггеры, как один, начали просить нажимать на колокольчик, чтобы мгновенно узнавать о новой публикации, новостные ресурсы начали добавлять бесячую браузерную нотификацию о новых постах. А в телеграме же с точностью до наоборот. Пользователей просят нажимать «mute», чтобы новые посты не раздражали. Даже тем, кто не убрал звук оповещений, сообщение не приходит благодаря особому тихому режиму отправки сообщений. Попробуйте отжать «mute» на недельку на канале и убедитесь сами — появится значок непрочитанного сообщения, но форсированное уведомление приходить не будет. За другие каналы ручаться не могу :-)

Ещё в телеграме всё ещё напрочь отсутствуют встроенные механизмы продвижения и популяризации каналов. Тут нет вкладки «тренды», нет «мои друзья читают», нет «рекомендаций». С точки зрения пользователя это безусловный плюс. И именно поэтому масса каналов изобилует рекламой других каналов и подборками каналов. Просто это чуть ли не единственный способ рассказать о канале новым читателям. «Экстраполяция» уже давно не рекламируется в других каналах, а рекламы в «Экстраполяции» вообще никогда не было.

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

Хочу попросить вас, мои любимые, рассказать о моем канале вашим друзьям. В телеграме ли, на фейсбуке ли. Может даже при личном контакте. Особенно приятно мне будет, если вы вместе со ссылкой на «Экстраполяцию» опубликуете понравившийся пост у себя на соц.страничке.

Люблю, целую, ваша «Экстраполяция».

Ссылка для ответственных, но ленивых: https://news.1rj.ru/str/itextrapolation
👍14💩3
Азимов когда-то сказал про магию и технологии, но в современности эта фраза должна звучать как «Любая достаточно продвинутая программа неотличима от интеллекта»
👍10
За годы программирования самых разных систем как по сложности, по объёму и по запущенности, я заметил очень простой признак плохого кода.

Если писать тесты на код тяжело, неудобно и вообще проще вручную проверить, то значит код этот — говно.
👍28🔥5😁2
«Самое клёвое в работе программиста выбирать технологии и мечтать о том, каким будет твой код. Самое скучное в работе программиста — писать этот самый код»
👍30🔥6😁4👎2😢1
Про тесты.

Мы-программисты пытаемся писать код, который будет чистым. Ну, там без дублирования, с всякими инкапсуляциями, наследованиями и переопределениями. Иногда идём на сделку с совестью и немножечко говнокодим, конечно, но каждый раз из-за этого прям сердце сжимается, так сильно нам нравится писать красивый код.

А вот тесты — это прям сплошной антипаттерн. Там сплошное дублирование, и процветает макаронный стиль. Но фишка в том, что так и должно быть.

Давным давно коллега мой придумал шикарное правило в отношении тестов и называл его «правилом Шапокляк». Идея в том, что тесты должны быть, как крокодил Гена — плоскими и зелёными. Чем больше в ваших тестах разного устранения дублирования, наследования, переменных и всяких ленивых вызовов, тем больше тест похож на код, а не на тест.

Приведу один простой пример. Писать я буду на абстрактном псевдоязыке, чтобы передать смысл. Если попрёт, будут и другие примеры с «хорошо-плохо».

Плохо писать:

user = create(User)
expect(user.full_name).to equal("#{user.first_name} #{user.last_name}")


Это сильно упрощённый пример, но вот expect(2 + 2).to equal(2 + 2) уже отчётливо прослеживается.

Хорошо писать:

user = create(User, first_name: ‘Bob’, last_name: ‘Smith')
expect(user.full_name).to equal("Bob Smith")


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

Кстати, мне очень сильно импонирует идея языка Гхеркин, где программа в прямом смысле читабельный текст, но про него как-нибудь отдельно расскажу.
👍38
Ко вчерашнему рассказу вспомнили язык Гхеркин и тут историю вспомнил одну.

Был у нас в аутсорсе заказчик один крайне заинтересованный в результате. И по всем законам «Гибкого программирования» мы его активно привлекали к обсуждению фич. И однажды он увидел наши аццептанс-тесты, написанные на этом языке. Сказать, что он офигел — ничего не сказать. Следующие несколько дней мы ему объясняли где лежат файлики с этими тестами, как их правильно называть и что там может быть в этих файлах.

Короче, через неделю наш Мэтью сделал первый пулл реквест в проект с фича-реквестом. Подумать только! Чувак, далекий от программирования, понял, что описать то, что он хочет получить, можно на языке, кхм-кхм, программирования и программисты сделают так, чтобы оно формально удовлетворяло описанным требованиям.

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

Считаю лучшим применением этого языка.
👍36🔥7🤔2
В домовом чате те, кто возвращается, регулярно пишут, что нашли чужие вещи у себя в квартирах и ищут владельцев.

Я хз что происходит. Обычно в играх так лут собирают. Идей других нету.
😁11🤔4💩3
Ребята. У нас открыт сбор всё тому же отряду. Будем рады любой помощи. Спасибо.

Ссылка банки не поменялась: https://send.monobank.ua/jar/4QxM3tuPTR

Монобанк-карта: 5375411201873143

Приват-карта: 5168752003854042

Пейпал: alexey@osipenko.in.ua
5💩1
Мы большие молодцы. Эта сумма пойдёт на покупку десяти тактических рюкзаков и шестнадцати пар летних берцев. Отчёт будет, ессно.

Всем участвовавшим большое-пребольшое спасибо. Но не расходимся, война только начинается.
16💩2👍1
Продолжаем рубрику «хорошо-плохо» и опять про тесты.

Месседж очень простой: Перестаньте писать циклы в тестах.

Плохо:

[2, 4, 6].each { |item|
expect(item).to_be_odd()
}


Хорошо:

expect(2).to_be_odd()
expect(4).to_be_odd()
expect(6).to_be_odd()


Иногда ещё, если позволяет фреймворк, можно это красиво завернуть в макрос (или что там у вас есть в фреймворке):

expect_to_be_odd(4)

Но нужно помнить, что такие вот макросы в тестах — это тоже код, который тоже бы неплохо протестировать. Правило всё такое же — любой мало-мальски сложный код нужно тестировать. Поэтому код должен быть максимально простым.
👍13
This media is not supported in your browser
VIEW IN TELEGRAM
Авто, на которое мы недавно сбрасывались, уже второй раз возвращается с передовой и в этот раз — на капремонт. Подвеска ушатана, что совсем не удивительно. Но машина по имени Пиксель в строю и совсем скоро опять поедет на передовую.
👍22💩52
Парадоксально, но с гитхаб-копилотом молодому и неопытному джуну станет сильно проще писать код и насколько же сложнее будет найти работу.
😁14💯4🤔3👎1
Ладно, на прошлой неделе мы в каментах начали обсуждение того, почему же это вдруг копилот составляет конкуренцию джунам. Мысль очень простая.

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

В итоге, джунам проще писать с ним код и сложнее чему-то научиться.
👍21🤔1
Секс в биологии далеко не всегда связан с размножением, это именно процесс полного перемешивания геномов двух организмов, и существует несколько вариантов того, как он может происходить. Например, при сексе у инуфзорий две из них подходят друг к другу, обмениваются генами, и расходятся, и при этом не происходит никакого размножения. А делают это они в условиях голода или плохих условий жизни, когда имеет смысл попробовать новые сочетания генов.
Ну, а зачем нужно, чтобы существовали мужчины и женщины? Ведь, получается, что только половина особей непосредственно производит потомство. Не было бы логичнее, если бы все оплодотворяли друг друга и беременели все? Размножались бы тогда вдвое быстрее.
Тут есть одна интересная гипотеза. Представим вид, который имеет половое размножение (то есть половой процесс, который происходит во время размножения) и, все представители которого гермафродиты, оплодотворяющие друг друга. Такие виды действительно есть, но их немного. Очевидно, что после секса представитель этого вида будет вынужден потратить много ресурсов на развитие потомков, для которых он является матерью. Вклад самца в потомство гораздо ниже вклада самки. Самец должен только произвести сперму, а самка должна потратить ресурсы на развитие потомков, пока они не будут способны сами питаться. Поэтому у таких видов можно иногда наблюдать борьбу за то, кто будет играть.
Например, у гермофордитных плоских червей перед процессом соития прелюдия выглядит, как драка на пенисах за право играть роль самца. Победитель, собственно получает право простым способом передать часть своих генов потомству.

Вероятно, вы спросите, а при чём тут программирование. А не при чём, вот такая у нас новая рубрика будет. Кто-то нейронной сетью факты о лягушках выдумывает, а у нас будет вот «очевидное невероятное».
👍33😁18💯3💩2
Говорят, это дорожный знак где-то в Нью-Йорке.

Но я хочу такое себе в кабинет, не на стену, а отдельно, чтобы доставать и ставить на стол, когда смотришь такой, а у тебя уже 1000 строк, а ты два дня назад, как ветвился.

#dimoneverything
🔥13😁7
Эй, друг, который читает это, потому что вам его переслали, знай! Тот кто вам это прислал, очень переживает за то, что происходит на фронте и делает всё возможное для победы.

Мстители, общий сбор! В этот раз мы собираем на пикап, вот этот. Есть желание на него сверху поставить пулемёт. Отчего эффективность и автомобиля и пулемёта в таком вот тандеме резко возрастает. Наверное, в контексте айти об этом пост будет.

И помочь тут можно двумя очень важными способами. Помимо финансов не менее важная штука — это распространение информации. Если вдруг вы очень хотите помочь, но уже всё отправили Притуле или в «ПЖ», то просто отправьте это сообщение своим друзьям или в соцсети. Плашка в начале сообщения предназначена как раз для ваших друзей.

Мы будем рады любой помощи. Спасибо.

Ссылка банки не поменялась: https://send.monobank.ua/jar/4QxM3tuPTR

Монобанк-карта: 5375411201873143

Приват-карта: 5168752003854042

Пейпал: alexey@osipenko.in.ua
9💩4👍1
Media is too big
VIEW IN TELEGRAM
Ребята поделились видео. На нём видно в тот Т5, на который мы собирали. И Т4, которого уже нет.

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


Собираем на пикап: https://news.1rj.ru/str/itextrapolation/628
🤯7👍4💩3
Когда в любой процесс приходят юристы и законы, получается полный бред и абсурд. Наверняка у тех из нас, кто работает на зарубежную компанию, по два ноутбука, один — для людей, второй — для чудовищ, один из них выдаёт компания со всяким предустановленным софтом, обязательным корпоративным ВПН и запретом ставить удобные программульки. Понятное дело, формально на то есть причины, но прикол в том, что это только формально. Обойти правила не составляет никакого труда и, при желании (или наоборот, при нежелании), это просто берётся и обходится.

Однажды я сталкивался с тем, что разработчики были вынуждены разрабатывать через удалённый доступ к компьютеру, который находился в юрисдикции конкретного государства. Ты такой, с ноутбуком в кафешке тайланда сидишь и с пингом 1.3 шевелишь мышкой компьютера в Штатах, потому что низзя, чтобы очень важный и секретный код на джява выходил за пределы офиса компании.

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

Из того, что полезно знать рядовому сотруднику:
1. Почему возник тот или иной запрет. Прям знать нужно не абстракно «для безопасности», а конкретную причину, прецендент или закон.
2. Понимать отвественность и санкции за нарушение правила. Просто уволят, наложат штраф в сикстиллион миллиардов денег или в тюрму посадят? Нужно знать не только чем грозят, а и что в действительности будет.
3. Обсудить способы обхода блокировок до начала использования. Если приходит начальник и говорит, что нужно вот программку поставить, чтобы экран записывала, прям тут же сказать, что для всяких непотребств, у тебя вон, есть айпад, второй ноутбук или стационарный компьютер и непотребства при желании легко можно обойти. И внимательно слушать что в ответ говорит. Если начинает неуверенно что-то говорить про «мы не предполагаем, пук-пук, что во вмремя рабмоты ты что-то использмуешь», значит ему тоже наплевать.

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

————————
Сбор на пикап: https://send.monobank.ua/jar/4QxM3tuPTR
5😁1💩1
Со всех рупоров сейчас можно услышать про новые фото от нового телескопа Webb. Они офигенные и вот интернет не нужно долго упрашивавть, чтобы появился сервис сравнения качества фотографий. И это офигенно.

https://johnedchristensen.github.io/WebbCompare/
🔥10
Скоро в моду войдут шестиконечные блики на фотографиях. Будет фильтр специальный «Webb» в инстаграмах всяких. Запомните этот твит, как говорится.
👍10😁5