Category: it

peremoga2

По Просьбам Трудящихся

Ну вот и дождались, закопали, наконец, стюардесу погасили, наконец, сервера с пионерской говноподелкой под названием "бэкенд жуны" и хуй бы с ними на самом деле. "Вице-президент центра разработки Juno в Минске" (далее, для краткости, Д) как и обещал привёл компанию к успеху, теперь "самая сильная команда в минске" называется лифт внезапно. У евреев такой национальный спорт похоже, насовывать разную поебень другим евреям (со всем уважением к, никак не осуждаю, наоборот завидую весь).

Прекрасная иллюстрация что при отстутствии нормального начальства "на местах" всё всегда превращается в ад и сгнивает к хуям, причём очень быстро. Нормальное начальство то было, но оно было далеко а те кто был адекватный на местах от нагрузки ушли в астрал и стали творить различную хуйню - свой фреймворк (ждём на днях в паблике ;]), десятки микросервисов и миллионы параноидальных и нахуй ненужных тестов. Ну все себе прекрасно представляют, да. С эстимэйтами в месяц на "добавить доп десятичный знак в сурж", ага. И вся эта радость в итоге под мудрым руководством опытного и эффективного менежера Д приползла туда куда должна была приползти. Пожелаем Д дальнейших успехов в труде.

Что хорошо, выиграл 7 рублей (я на такие вещи всегда по рублю спорю ;]) по срокам закрытия этого балагана. Надо б ещё подазаработать - принимаю ставки на разгон оставшихся лифтом до марта (большая контора, потребуется время что бы понять полную бесполезность свежего приобретения).

[Тут вы сами нафантазируйте как я охуесосил всех причастных, мне реально лень писать - работа недоработана, книжки недочитаны, сериалы не просмотрены и стар соулс не пройден и кот сидит и пытается меня загипнотизировать на предмет насыпать перекусить между снами].

PS. Специально для Д пысынка, по моему подходит.

peremoga2

Работы Псто

https://www.belta.by/society/view/shunevich-mvd-zainteresovano-v-pomoschi-talantlivyh-programmistov-dlja-raskrytija-prestuplenij-338325-2019/

"Министерство внутренних дел заинтересовано в талантливых программистах, которые бы помогали раскрывать преступления. Об этом сообщил сегодня журналистам глава ведомства Игорь Шуневич."

А МВД готово платить конкурентные зп? Талантливый программист в минске сейчас имеет зп +-$4.5-5K не особо напрягаясь (если чуть поднапрячься - можно и 20тку поднимать, было бы желание). Так же интересует как там у них со свободным или хотя бы достаточно гибким графиком что предлагают все без исключения работодатели? Так низя? Ну - сами справляйтесь, удачи вам (причём искренне - от МВД есть польза очевидно). Да - талант (ака способность мозга обучаться) необходим, но мы вложили огромное количество времени и сил в это самое обучение и теперь именно мы диктуем условия, тем более спрос на нас растёт и будет расти дальше :) А так - можете вон выпунскников разных овцеёбских гуманитарных шарашек нанимать, они с радостью будут что угодно делать за еду ибо никому нахуй нигде не нужны, только результат будет соответствующий.

PS. Готов рассмотреть офер от МВД если что. Мне деньги особо не нужны, так что $7K в месяц, 40 дней оплачиваемого отпуска + 10 оплачиваемых дней по болезни (без предоставления справок очевидно), разумный график (с 11ти до 18ти например). Если что у меня сейчас лежат два офера (которые я таки зарежектю) с более лучшими условиями по всем пунктам, но готов принять и такой, особенно если в отдел по борьбе со змагарьём.
peremoga2

Нас Спрашивают

Какого хуя айсед псит на мэйнфрэймер. Налетели аж стаей фанаты мэйнфреймера. Отвечаем - потому что во первых вот тот кусок нинужен, во вторых если его и можно использовать - то как пример "как писать не надо". А как надо? Примерно так (я раст не особо знаю - годика 3 назад почитал часик доки и пописал пару хеловолдов):

fn summon_satan(seconds: u64) -> String {
    let labels = vec!["hour", "minute", "second"];
    let parts = vec![seconds / 3600, (seconds % 3600) / 60, seconds % 60];
    let index = parts.iter().position(|&p| p != 0).unwrap_or(2);
    let parts_n_labels = parts[index..].iter().zip(labels[index..].iter());
    let strs = parts_n_labels.map(|(&p, &l)| format!("{} {}{}", p, l, if p == 1 { "" } else { "s" }));
    return strs.collect::<Vec<String>>().join(" ");
}


(c). любое прямое или косвенное использование данного кода в мэйнфреймере запрещено.

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

Пидров Псто

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

pisia

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

Информационная справка.

Количество лесов во всём мире за исключением дикарских территорий (африка, центральная америка) растёт. Растёт по совершенно банальным и скучным причинам - при наличии горизонта планирования чуть дальше чем "завтра" прилично дешевле получается выращивать (благо усилий много не требует, сам растёт в основном) лес в одном месте рядом с инфраструктурой для его переработки чем возить его издалека к этой инфраструктуре. Это как бульба, только чуть сложнее. Бульбу ты весной посадил - осенью собрал. Лес весной посадил - осенью через 20 лет собрал. Романтика.

Вы, эмм, уважаемые, лучше фреймворк (тм) заопенсорсьте чем хуйнёй страдать.

peremoga2

Я Принёс Вам Говнеца

Вкуууусненького - https://www.usatoday.com/story/tech/nation-now/2018/07/15/elon-musk-thai-cave-rescue-diver-pedophile-twitter/786527002/

Айсед уже очень, очень давно говорил:

1. маск ничего особенного из себя не представляет, даже клоуншоумэн из него унылый. Просто охуительно повезло оказаться в нужном месте в нужное время с нужным зареганным доменом. Всё.
2. маска не интересует ничего кроме маска. Существо с уникальным бесконечным чсв. https://www.youtube.com/watch?v=KGR5HP3KSBk - ничего более днищенского я представить себе не могу.

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

Церковь Святого Мэйнтейнера

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

Начну я пожалуй со стародавней истории (которая в сраче возникла только вот вчера вроде) которая позволит нам рассмотреть проблему на конкретном простом случае.

Шёл 2004ый год. Юный айсед в пионерском галстуке подрачивал на линуксы и всякий прочий опенсорс. И вот этот юный айсед в процессе надрочки увидел что IM клиент gaim (он сейчас называется pidgin) при общении по асикью (был такой протокол, использовался в совке в основном) с теми кто ещё не постиг радостей опенсорса рюсский текст приходит и уходит разными весёлыми кракозябликами что никак не способствует плодотворному общению. Айсед, естественно, пошёл на #gaim@freenode и стал разбираться с мэйнтейнерами в проблеме. Оказалось что проблема не совсем в гейме а во всех остальных асикью клиентах (включая более старые версии гейма) которые под видом юникода шлют какую нибудь поебень. Ну там вплоть до того что миранда (это другой древний IM клиент) брала cp1251, пририсовывала спереди байтики кириллической страницы utf16 и считала что это самый настоящий utf16, такое вот безумие. Это всё вот конечно хорошо но надо было что то делать. Ну как бы что делать понятно - опенсорс же! Надо взять исходники и пофиксить проблему что юный айсед собсвтенно и сделал. Родился патчик из 30 строк который добавлял опцию в настройки ойсикью "перекодировать кривые рюсские сообщения" (сам исходный патчик, увы, не сохранился). Вот с этим патчиком айсед прибежал обратно на #gaim@freenode что бы поделиться радостью с разработчиками ну и что бы позволить остальным пользователям гейма общаться по рюсски. И вот тут всё перестало быть радужно и весело. Разработчики сказали что так как проблема не в гейме то патчик они принимать не будут. Ну то есть вот пусть все остальные всё пофиксят и станет всё заебись, ага. Вот так вот на сладко причмокивающего в мягкой постельке опенсорса юного айседа вылили ушат холодной реальности. Дальше скучно и неважно - айсед родил из патчика http://sourceforge.net/projects/gaim-reco/ после чего автоматом получил бан на #gaim@freenode, через месяца три геймовцы попытались таки сделать свой фикс (который был такой же но другой и не работал, более того в некоторых случаях не позволял работать плагину).

Вот как то вот так вот. Теперь давайте подумаем какие ошибки допустил юный айсед? На самом деле он допустил только одну ошибку. Увидев что мэйнтейнеры гейма идиоты надо было сразу закрыть чятик, снести гейм и поставить IM клиент который работает. Всё, проблема решена.

Есть простая истина - единственное важное свойство любого софта это его работоспособность. Если софт работает то всё заебись и это хороший софт, если софт не работает то это плохой софт. Открытость исходников софта это даже не вторичный параметр. Ну есть исходники, ну хорошо. Нет исходников, ну нет. Ни на что это особо не влияет. Юный айсед в свои 22 этого не понимал и понимать, наверное, не мог, это нормально. Но вот сейчас я с ужасом вижу что люди которым уже под 30 не могут этого понять. Более того, они возвели вот всё это в ранг какой то религии в которой мэйнтейнеры априори непогрешимы (как же! они сели и сделали софт и вот отдали всем всем всем исходники! они святые!) а непризнанный гений айсед не смог пройти пир ревью своего патча и поэтому мудак.

До этого всё было просто и очевидно а вот сейчас я буду рассказывать не совсем очевидные вещи.

1. Мейнтейнер это тоже человек, со своими тараканами и прочим. Он может разбираться в проблеме и лучше и хуже случайно взятого айседа. Он может быть умнее и тупее. Человек. В случае вот конкретного айседа практически всегда получается так что случайный мэйнтейнер и разирается в проблеме хуже этого айседа и тупее айседа, но это не суть важно.

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

3. Тупой уеблан будет всегда делать хуёвый софт и всегда создавать проблемы на ровном месте тем кто этот софт захочет сделать работающим. Если уеблан харизматичен, то за ним потянется армия хомячков и кривая хуй пойми как работающая поделка станет стандартом в индустрии.

Примеры? Их есть у меня.

Возьмём, например, perl. Perl это наверное самое страшное что вообще могло случиться в ойти. Убиты миллионы часов времени разработчиков, написанны гигатонны кода (часть которого до сих пор надо обслуживать, легаси), хорошие языки из той же ниши почти десятилетие влачили жалкое и убогое существование (кто сказал ruby?). Но перл не так интересно, к счастью ларри волл (уеблан высравший перл) больше не родил никаких гениальных продуктов.

Давайте лучше поговорим за линукс кернел. Я надеюсь что всем очевидно что линукс кернел это кривая пионерская поделка? Нет? Ну запустите make menuconfig, если вам это не поможет то я не знаю как вам объяснить. Обиженный хороший продукт тут тоже в наличии - фрибзд. И, самое главное, автор линукс кернела сделал ещё один продукт. Гит. И вот что характерно, уи гита находится в том же самом состоянии что и конфигуратор кернела. К использованию нормальным человеком непригодно. Точка. Хотите поспорить? Тогда ответьте на простой вопрос - что сделает команда "git checkout хуй". Если после ответа на этот вопрос вы всё ещё считаете что никакой проблемы нет и уи гита хорош, то, пожалуйста отпишитесь от этого уютненького и переквалифицируйтесь в дворники. Я не хочу и не буду вам ничего объяснять. Пока писал это псто - кинули ссылку - http://levin-matveev.livejournal.com/78830.html - может она поможет понять.

Вот вчера на нетбуке жены (убунта) поставился скайпик и ВНЕЗАПНО начал хрипеть и визжать вместо того что бы культурно разговаривать разными голосами как положено. Виноват, конечно, кривой блоб скайпа (ну или был вариант что виноват кривой драйвер альсы) но никак не пыщпыщ аудио которое по умолчанию стоит в бубунте. ЧСХ, баг в пыщпыщ аудио закрыт с won't fix лично поттерёнгом (автор пыщпыщ аудио), по его мнению баг в альсе. Я для интереса попробовал вынести пыщпыщ аудио и, как и ожидалось, скайпик сразу стал говорить разными голосами что от него и требовалось. Такое. И к чему это всё было? Это всё было к вопросу можно ли назвать systemd говном и непригодной к использованию пионерской поделкой без попыток его использования и просмотра кода? Можно! Достаточно зайти на http://en.wikipedia.org/wiki/Systemd и прочитать "Developer(s) Lennart Poettering".

Я кончил.
ps

Адвентисты Седьмого Теста

Нет ну реально заебали. Вконец. Блядская секта, похуже хрестанутых. Что характерно, в секте состоит в основном всякая тупая копчёная индусня и прочие говноеды. При этом они считают всех не разделяющих их пидорастическую религию убогими, жалкими и недостойными называться программистами.

Я понимаю что объяснять что то фанатикам бесполезно, но всё же. А вдруг. Почему тесты говно? Тут есть несколько причин.

1. Чуть более чем всегда тестируют то что тестировать вхуй не впилось. Вплоть до:
def add(a, b)
  a + b
end


2. Тесты эти практически всегда сложнее кода который они должны тестировать.
test 'add'
  class NumberFactory
    def self.produce_number(range)
      rand(range)
    end
  end

  assert(add(1, 1) == 2, 'я')
  assert(add(1, -1) == 0, 'тупое')
  assert(add(-1, -1) == -2, 'уёбище')
  assert(add(10, 20) == 30, 'годное')
  assert(add(10, -20) == -10, 'исключительно')
  assert(add(-10, -20) == -30, 'на')
  assert(add(1, 1) != 3, 'метан')

  100.times do |x|
    number_one = NumberFactory.produce_number(x + 1)
    number_two = NumberFactory.produce_number(x + 1)

    assert(add(number_one, number_two) == number_one + number_two, 'я мечтаю что бы меня трахнул чёрный властелин')
  end
end


Я не шучу - 99% тестов выглядят примерно так и несут такую же пользу. Очень жаль, тупое говноедище (см. ссылку выше) закрыло все свои посты, там был реальный пример функции которая возвращал толи захардкоженую строку, толи к ней прицепляла параметр, чота такое. И адовые тесты на это с использованием каких то дичайших либ чота там делающих с байткодом и прочим пиздецом. Я не шучу.

3. Они дают ложное ощущение безопасности. Тесты прошли? Хуяк-хуяк и в продакшн. Ничего же плохого случиться не может. Кстати, вариант что тесты не учитывают все случаи или содержат ошибку не рассматривается вообще. Никогда. Когда с ебанашками пытаешься говорить на эту тему у них та куча поноса больного бешенством кенгуру, которая заменяет им мозг, начинает бурлить и никакого конструктивного диалога не получается.

4. Они отучают программистов думать. Нахуя думать если есть тесты? Тесты прошли - всё заебись. Не прошли - будем подгонять код под тесты. Этот пункт коррелирует с предыдущим. Нет смысла как то ещё проверять код при пройденных тестах (ну в смысле это пидорасики так считают).

5. Замечена закономерность. Чем больше тестов - тем меньше отладочных логов. А вот как разбираться с дейтсвительно хуёвым случаем когда раз в неделю в продакшне рандомно идёт по пизде целостность данных? Тесты тут ничем и никогда не помогут. Ну и да - тестами нереально оттестировать что нибудь сложное, когда 100500 процессов/потоков и данные хуярят гигабайтами в минуту.

Ну вот как то так. Возникает закономерный вопрос: чо, тесты не писать? Да нет - писать. Только правильные, функциональные, тесты. То есть пустить тестируемое приложение, накормить его реальными данными, дёрнуть типичные вокфловы и сравнить полученный результат с эталонным. Да - оно не покажет конкретного места где сломалось. Но серьёзно - оно вам надо? Вы не сможете найти в вашем коммите (ну или в более сложном случае - в паре-тройке коммитов, при мерже) место в котором что то сломалось? Ну тогда идите работать в зоопарк, младшим помощником старшего уборщика кала африканской антилопы Вени, на большее у вас не хватает способностей.

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

Ебитесь раком (tm).

PS. Я реально в одном проекте видел тесты к тестам. Натурально. Моя жизнь уже никогда не будет прежней.
ps

Философское

Хороший ЯП/DSL/что-там-ещё может получиться исключительно в случае когда он спроектирован реальными программистами для реальных программистов. Хороший пример - кложа. Во всех остальных случаях получается тотальное говно непригодное к использованию разумными существами и вредящее всей индустрии. Ну вот парочка примеров таких характерных:

1. SQL - проектировали академики (собирательное определение для баранов тусящих в говновузах) для манагеров. На выходе получилось полное говно в котором ни один манагер никогда не разберётся и непригодное для использования программистами.
2. Cobol - опять академики для манагеров. Что на выходе - понятно - уже 50 лет прошло а до сих пор аукается.
3. Pascal - и опять академики только в этот раз для обучения. Ситуацию усугубили гомопидорасы из борладна со своим делфи.

Сотни их.

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