Pull to refresh
3
0
Dmitri Sinitsa @unabl4

веб-разработчик

Send message
Что там показывать-то? США это. Руби ещё более-менее как-то «жив» в США. Питон популярен везде более-менее равномерно.
Github, как мне кажется, географически (в смысле география юзеров) ОЧЕНЬ biased в сторону США.
Иначе я никак не смогу объяснить 4-ое место Ruby. Сам на нём пишу (писал) и прекрасно знаю, что он почти везде, кроме США, уже давно почти никем не используется. Во всяком случае на 4-ое место ему точно никаким образом не подняться.
Так же для валидации можно обратить свой взор на глобальный опросник от StackOverflow — insights.stackoverflow.com/survey/2018, раздел «Most Popular Technologies»
Если смотреть на чисто спортивные легковые автомобили, то, по-моему, лучше обойтись карбоно-керамикой, а не заниматься overengineering-ом.
Допускаю, что охлаждение тормозной системы может быть более чем оправдано для грузовых транспортных средств, работающих в жёстких условиях эксплуатации (и приток воздуха может быть банально недостаточным).
green threads в руби нет со времен версии 1.9, т.е уже почти 12 лет.
Жаль, что, скорее всего, больше такого в LKML (или где-либо ещё) не увидишь. Остаётся только перечитывать старенькое и пускать скупую ностальгическую слезу :) Это же просто бесценно.
А теперь выложите сюда pprof с go и вполне может оказаться, что ботлнек — это работа с базой.
Алсо, для нагрузочного тестирования есть православные ab / siege.
Например, как геттеры от сеттеров отличаются?

# это геттер
def first_name
  @first_name
end

# это сеттер
def first_name=(val)
  @first_name = val
end

Вот и всё различие.
На самом деле таким макаром геттеры/сеттеры не пишут, только если надо переопределить их стандартное поведение.
Дефолтную пару можно сгенерировать с помощью одной строчки
attr_accessor :first_name


Будет ли имя addParameter «запахом»?

Скорее да, чем нет.
Из Вашего примера, скорее всего данный функционал будет имплементирован немного по-другому.
request.params[key]=value

params — это просто словарь, к которому можно обратиться напрямую.
"[]=(key,value)" — это тоже метод.

P.S. Проверил — так примерно в рельсах и сделано. Только там params — это экземпляр класса Parameters, который в свою очередь ведёт себя как словарь.
Пример можно?
Я всего на нескольких ЯП пишу. Ни в одном из них нет ограничений на имя метода.

Ruby. Вполне характерно писать вообще без глаголов или глагольных префиксов.
И если чистые глаголы это ещё куда не шло (#call, #perform или что-то в этом роде), то глагол + ключевое слово — это скорее code smell, чем норма.
И это не ограничение, а соглашение.

start() — идеальный метод;
start(speed) — отличный метод;
start(speed, direction, path) — похуже. Сходу и не вспомнишь, в какой последовательности параметры передавать;
start(speed, direction, path, maxBias, onError) — комментарии, думаю, излишни.

Если аргументов больше ~3 (это эмпирически) — это уже code smell.
Разумно применять keyword-аргументы, если возникает путаница.
Приблизительный максимум 20 строк и 150 символов в одной строке

150 символов — это явный перебор. Большенство редакторов ставят отсечку почти на половине от этой величины. И даже это многовато.

Идеальное количество входных аргументов для функции = 0

Если это foo/bar/baz для hello world — да, а так нет.

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

Не обязательно. Это зависит от ЯП.

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

Это не всегда зависит от пожеланий одного разработчика. Время на рефакторинг далеко не всегда удаётся выбить.

If, else, while и т.д. должны содержать вызов одной функции. Так будет читабельнее, понятнее и проще.

Вообще не обязательно. Очень сомнительное правило.
А, прошу прощения — неправильно понял о ком речь.

www.artima.com/scalazine/articles/origins_of_scala.html
Тут есть некоторые пояснения :)
Интересно, насколько корнями Scala уходит в самую первую Java и ранее. И как сама Scala, которая частично «базировалась» на малоизвестных Funnel, Pizza, в каком-то даже смысле опережала развитие Java на тот момент.
У всех команд разный опыт, разная экспертиза и, как следствие, может быть совершенно иное видение того языка, который бы больше подходил под их конкретные задачи и требования. Для кого-то динамическая типизация = прагматичность — тогда не надо беспокоиться о системе типов (которая может быть очень даже непросто для понимания) или о скорости компиляции. Кто-то исходит из «модности», «хайповости», трендовости, размера и/или активности сообщества — как быстро можно загуглить ту или иную проблему или как быстро можно получить ответ на stackoverflow. Скала уже давно прошла свой пик популярности. Тот, кто с ней остался, вполне отдаёт себе отчёт — что, зачем и почему.
Каждый понимает «прагматичность» по своему.
Я не могу себя причислить к скала сообществу, потому что я не работаю с этим языком на постоянной основе. Но приходилось писать несколько проектов в прошлом на базе Play Framework. Перед этим я прошёл вводный курс по скале на курсере (который опять же ведёт Мартин). От этого языка всегда веяло какой-то академичностью — такое ощущение, как-будто его с интересом и любовью препарировали в стенах университетских лабораторий :) Я, кстати, не припомню, чтобы это кто-то скрывал.
И вот появился этот монстр, в основе которого JVM с своими возможностями и ограниченями, на которое сумели взгромоздить и FP и OOP, подружив их друг с другом, и доселе невиданную систему типов (я честно не знаю, украли ли они её у кого-то или сами придумали) и ещё бог пойми чего и всё это ещё и под соусом обещаний интероперабилити с java, type-safety, иммутабельности и т.д и т.п. Иронически, получился швейцарский нож. Университет EPFL, в котором преподает Мартин, так же находится в Швейцарии (Лозанна) :)

И вот тут уже конечному разработчику решать, как с этим многофункциональным ножом играться. Если юзать его аккуратно, как better java, оно, на мой взгляд, довольно хорошо работает. Писать на скале, как на улучшенной джаве действительно удобно и приятно. Прагматично? Ну, возможно.
Но можно заиграться и перерезать себе все руки (прежде, чем отстрелишь ноги) — любой обфускатор позавидует. Концов не соберёшь — в какой-то момент сдавался даже IntelliJ Idea для скалы. Отдельно радует SBT, в котором есть операторы, которые даже загуглить нельзя. :)

P.S. Я потом ещё прошёл курс по реактивному программированию на базе скалы — это просто взорвало мой мозг.
lampwww.epfl.ch/~odersky/papers/#Scala

Вся информация тут. Не надо выставлять человека уж совсем идиотом.
К несчастью, есть как клоны, так и китайские самоделки. Когда вышел честный, оригинальный ELM v1.4, китайцы его скопировали и назвали v1.5. А потом, китайцы пошли своим путём, создав свою поделку со своей же прошивкой, назвав её ELM327 v2.1. И если 1.5 это ещё куда не шло, то 2.1 — это довольно печальное и унылое зрелище. К слову, оригинальные ELM327 в продаже есть всего в нескольких местах, и стоят они под 50 евро. Клонированные или китайские поделки вычисляются несложно — в терминале они откажутся работать с целым рядом команд.
А в ряде специфических программ для сканирования и диагностики (например, FORScan), они просто откажутся работать (хотя будут работать в, например, Torque, ScanMaster и других мобильных приложениях). У меня вот версия 2.1 и она очень печально работает с маздой. Прям из рук вон плохо.
Спасибо за качественную статью.
В автомобильном мире это всегда актуальная тема.
ELM327 клоны шлют огромный пламенный привет.
Софт-брикнутные FTDI чипы после установки драйвера >= 2.10 тоже.
Я, как довольно активный пользователь ActiveRecord ORM (рельсы), могу сказать, что этого хватает на процентов, эдак, 95 всех задач. Он действительно хорош. Ещё процента 4 покрывает Arel — SQL AST, и, пожалуй, оставшийся 1 — это что-то совсем-совсем сложное, что нужно писать полностью руками.
Но это всё не отменяет того, что нужно хорошо понимать особенности работы БД, причём довольно глубоко
Спасибо, интересно.
Что-то разочаровало меня то, как устроены булевы типы, а именно наследование от целочисленного типа. В прошлой статье пример со словарём мягко говоря вообще не обрадовал.
Во-первых, спасибо за интервью. Интересно. Для 22-ух лет очень толково. Про ардуино, стробоскоп, преобразование Фурье и т.д было бы, кстати, интересно почитать отдельной статьей. А почему бы и нет.

Отвечая на вопрос, сразу хочу отметить, что то, чем я занимаюсь (веб-разработка) — это, конечно, мой хлеб с маслом, но не похоже, что это дело всей моей жизни.
Если бы веб-разработка стала незаконной, я бы попробовал превратить одно из своих хобби в работу или источник дохода. А именно, мне интересна и близка автомобильная тематика — автоэлектрика, электроника, их диагностика и ремонт. Помимо этого как практикант в своё «работал» с промышленной автоматикой — возможно удалось бы там чего-то добиться. Интересуюсь радиоэлектроникой и встраваемыми системами — программировать железяки тоже классно. В общем, смотрел бы куда-то по смежным областям.
Статически вычисляемое дефолтовое значение параметра функции — это как раз то, чем я себе ногу отстрелил.
Я поставил стандартное значение равным пустому массиву, который я в теле функции заполнял значениями и как-то использовал. Причём функция была ещё и в добавок рекурсивная. В общем, это было крайне неприятной находкой.
«Падение», кмк, заключается в том, что руби по сути за редкими исключениями не нашёл себя ни в чём другом, кроме как веб-разработке.

Information

Rating
Does not participate
Location
Таллин, Эстония, Эстония
Date of birth
Registered
Activity