Categories
*.JAR

О Go и идиотах

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

Вот один пример:
https://www.goinggo.net/2013/07/object-oriented-programming-in-go.html
Мужик запихал процедурку в struct, и считает, что делает OOP. И ведь кто-то еще ходит на его курсы.

Categories
*.JAR

Люблю O’Reilly

До пятой редакции даже тигр был сильно офигевшей от всего того, что происходит в Java:

Categories
*.JAR

Dependency management в Go

Дремучие Cшники считают, что dependency management не нужен. Все, что нужно – пихаешь в проект. Чужой код или свой – какая разница?
Сначала все соглашались. Google ведь плохого не посоветует. И только когда vendor’ящиеся из всех щелей проекты раздулись, некоторые стали что-то подозревать.
При этом дремучие Cшники продолжали твердить, что раз в Google это работает, то это будет работать везде. Ведь у каждого есть десять индусов, чтобы следить за dependencies.
Некоторые китайцы и прочие демократы из Сан Франциско, которых в Google не взяли, решили все же пилить свой dependency management. Был godep, на который все дружно перешли. Затем был gom, на который все опять же дружно стали переписывать свои dependencies. Наконец кто-то додумался просто украсть идею у NodeJS, а не изобретать свой одноколесный велосипед. Так появился Glide. С Glide хотя бы можно работать. Не прошло и шести лет.

Categories
*.JAR

Лучшая статья по MySQL репликации

Не смотря на то, что на русском. Лучше официальной документации:
http://highload.guide/blog/mysql_replication_2015.html

Categories
*.JAR

Вся суть хипстероты

“Я изучаю Go не очень долго, но даже за те две недели, что я потратил на его изучение, я успел сделать несколько проектов на нём” (с) аноним

Так и появляются эти десятки нерабочих библиотек на Go, делающих то, что язык должен был бы делать и сам по себе.

Categories
*.JAR

О StackOverflow

Оказывается есть вещи и похуже индусских “программистов” на StackOverflow. Это “программисты”-латиносы. Эти пишут свою код на каком-нибудь португальском. И пойди пойми, что такое negraLista.

Categories
*.JAR

Quasar

Для любителей пописать web на Go и прочих дурачков придумали Quasar. Теперь можно писать свои fiber’ы (goroutine’ы) и channel’ы. С channel’ами правда сильно промахнулись, поскольку Java и так всегда поддерживала channel’ы. Только назывались они BlockingQueue . Так что тут Rob Pike конечно в пролете.

Categories
*.BAK *.JAR

О StackOverflow

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

Categories
*.JAR

О тестах в JavaScript

Как и в большинстве скриптовых языков, в JavaScript ничего не работает само по себе. Чтобы получить хоть какой-то результат, нужно самому собрать два-три “решения”, которые сами по себе никакие не решения, а так, наброски для решений. Каждое из них было некогда написано другим хипстером, и между собой они обычно конфликтуют, потому что тот хипстер уже ушел в еще более хипстерский язык.
Вот хочешь ты быть четким и заиметь тесты. Отлично, есть же Mocha! Только тесты на Mocha толком писать нельзя. Да, тестовый фреймворк не умеет проверять результаты тестов. Нужно еще как минимум Chai.

Categories
*.JAR

Дела Spring’овые

Есть проект, уютный чатик на Java и SockJS. Казалось бы, what could go wrong?
Поскольку это Spring, а не Spring Boot, пускают его на Tomcat.

Categories
*.JAR

О React’е

Ситуация с React’ом очень похожа на ту, что была с Backbone’ом некоторое время назад. “React быстрый, надо все писать на нем!” твитят любители квадратных очков и телефонов от Apple.
Потом оказывается, что писать больше тысячи строчек кода на callback’ах как-то очень грустно. Тогда прикручивают Flux. Нет, уже Redux. Нет, уже MobX. Потом оказывается, что все еще есть проблема с immutability, а писать везде .slice()/.splice() некомфортно. И прикручивают ImmutableJS. Или Lodash. И вот уже vendor free улетел в форточку. А это мы еще не начали даже стучаться на сервер. Для этого нужно еще что-нибудь интересное прикрутить.
И потом со всей этой самолепной хренью пытаются взлететь.

Categories
*.JAR

Прелести crossenv’а

Разработали аппликацию на NodeJS. Пришло время деплоить в Heroku. Как обычно, на Heroku ничего не работает. Стали выяснять в чем дело. Оказалось, что одна папка называется “Models”, хотя в коде везде прописано “models”. Windows case insensitive, потому это съел во время разработки без проблем. А Linux не смог. Делов то – переименовать папку, да заpush’ить еще раз на GitHub. Вот только Git папку не переименовывает, поскольку он тоже на Windows case insensitive, и считает, что никаких изменений нет. В итоге, пришлось переименовать папку в “штобтысдох”, заcommit’ить ее, переименовать ее еще раз в “models”, и снова заcommit’ить. Только после этого Heroku согласился проект поднять.
Вывод прост: пацаны, покупайте себе MacBook. Иначе никак.

Categories
*.JAR

О Webpack

Hello world с hotreload’ом на WebPack’е и React’е от ведущего программиста Facebook’а выкачивает 172Мб dependencies.
Как можно после этого не любить такие технологии, я даже не знаю.

Categories
*.JAR

О Ruby и Whenever

О том, что представляет собой Ruby, а точнее его философия gem’ов, на мой взгляд лучше всего говорит пример Whenever.
Есть простая задача – каждый час запускать на сервер какой-то таск.
Whenever – наиболее популярная библиотека для этой задачи.

Categories
*.JAR

О JNI

JNI (интерфейс вызова C функций из Java) разрабатывался явно упоротыми Cшниками.
Половина кода это

(*env)->Call(env)

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

“(III)V”

Это не римская арифметика. Это функция, которая получает три int’а, и возвращает void.
А как тогда будет выглядеть функция, которая получает три long’а и возвращает объект?
Может быть “(LLL)O” ?
Нет! Заклинание звучит как:

“(JJJ)Ljava/lang/String;”

Categories
*.JAR

O Kotlin

Первые впечатления от Kotlin целиком положительные. Боюсь только, что основные достоинства языка станут так же его основными недостатками. Можно легко мешать код Kotlin с Java? Те, кто хорошо знаком с Java будут продолжать писать на ней. А те, кто не знаком, скорее всего будут держаться от Kotlin подальше, потому что это “почти как Java”.
В остальном же, для тех, кто пишет server side, Kotlin предоставляет удобный (и на удивление быстрый) templating. Потому как обычно либо statically typed, либо templating.

Categories
*.JAR

О Java на Android’е

Каждый раз сталкиваясь с Java на Android’е по долгу службы я сильно недоумеваю, а кто все эти люди, кто стоят за такими экстравагантными решениями. Явно не Java программисты, а скорее какие-то дремучие CPPшники.

Categories
*.JAR Travel

Лондон, среда

Ротация яиц на завтрак продолжается. Сегодня у нас scrambled eggs.
День начинается с разговора про NodeJS antipatterns. А разве весь NodeJS не один большой antipattern? Для примера взята воображаемая Java программистка, которой неповезло перейти на NodeJS. Все любят Java.
Потом кулхацкер рассказывал, как он взломал мобильную банковскую апликацию. Без паники, у него на это ушло пол года, и он сумел только вызывать банковский API. Но все равно объем работы впечатляющий.

Categories
*.JAR Travel

Лондон, вторник

С утра почувствовал себя по настоящему отдохнувшим.
На завтрак вместо яиц пашот яйца вкрутую. Хоть какая-то ротация. Еще тут замечательные круасоны. Вообще с выпечкой в St. Ermin’s все хорошо. А вот со столиками – не очень. В пол девятого столовая настолько заполнена, что сидим чуть ли не в фойе.
Второй день конференции. BBC рассказывают, как даже им удалось сделать microservice’ы. Потом на сцену выходит легендарный Mitchell Hashimoto. Он выглядит настолько уверенным в себе, что не удивительно, что инвесторы выстраиваются в очередь, чтобы дать ему миллион-другой.

Categories
*.JAR Travel

Лондон, понедельник

На завтрак в гостинице тот же бекон и сосиски, что и в Grange’ах. Это что, официально заверенные сосиски какие-то? Яичницы нет, только по специальному заказу. Есть яйца пашот. Но если их не есть горячими и с соусом, это та еще гадость, на мой взгляд.
Обычно в отелях чашки для кофе очень маленькие. Тут наоборот, мне за завтраком хватает одной.
IMG_20160307_095147
До конференции пешком от отеля всего несколько минут. Раздачу беджей организовали по первой букве фамилии. Хотя понятно, что имен на A больше, чем на Z.