JS.erb - просто не модно

June 23, 2017

К посту про js.erb были очень правильные комментарии, что писать таким способом быстрее, удобнее, надежнее, чем тянуть вебпаки и прочие реакты. Почему же все таки все так не пишут? Просто потому-что это не модно. Ладно шутка. Я интуитивно чувствую, что js.erb не может быть основным рабочим инструментом в компании для фронта (вспомогательным может быть, только никому не рассказывайте, что у вас это используется, это не модно), сейчас попробую поразмышлять.

Все современные веб компании находятся в постоятельном стремительном росте, кто-то на самом деле, кто-то пока только хочет. Под другому нельзя. Очень много шума вокруг SPA, богатого фронта, много специалистов и желающих ну и честно, UX хорошо сделанного SPA конечно лучше. Поэтому разделение на фронт и бэк просто лучше масштабируется. JS.erb требует дисциплины, ну и как правильно сказали в комментариях, фул-стек команду. Но если нужно собрать например 5 команд или 10, то гораздо проще найти отдельно фронтов и отдельно бэков, чем фул-стеков. Вообщем ответ мне кажется где-то здесь.

0 Comments

Принятие решений

June 22, 2017

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

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

Решение или отказ от решения по сотням ситуаций происходят в каждую секунду у всех. В самом факте принять решения ничего сакрального нет.

0 Comments

Робастный

June 21, 2017

В одной фиговой книге, с хреновым переводом, я встретил слово "робастный". Среди всей той воды, которой там было предостаточно, это слово все равно смотрелось очень сильно. У нас долго даже много было шуток на эту тему.

"РОБАСТНЫЙ — [англ. robust < лат. robuste прочно, крепко] инф. устойчивый к помехам." сообщает нам гугл. Хм. Сейчас мне довольно часто приходится употреблять слова "масштабирование", "архитектура". Мне бывает немножко неловко в такие моменты. Но, реально, некоторые явления в жизни невозможно описать без этих слов. Однако я очень расчитываю не попадать в такие ситуации, когда придется на полном серьезе использовать слово "робастный". Фу.

0 Comments

Как научится программировать

June 20, 2017

Меня иногда люди спрашивают как научится программировать. Вообще я не знаю, но если мы говорим про веб, то по-моему нужно начинать с Рейлс. Мне кажется если прочитать Agile Web Development with Rails и guides.rubyonrails.com, а это пару месяцев, то можно выходить уже на первую работу.

Рейлс даёт хорошее предложение представление от архитектуре веб приложения целиком. Конечно вот это выглядит проще:

const http = require('http');

const hostname = '127.0.0.1';
const port = 3000;

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello World\n');
});

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

и вот это:

require 'sinatra'

get '/frank-says' do
  'Put this in your pipe & smoke it!'
end

и это (хм, хотя это ничего не делает полезного):

package main

import "fmt"

func main() {
    fmt.Println("Hello, 世界")
}

однако на рейлс можно делать настоящие приложения (Depot Application, м-м-м), а вот сделать что-то интересное на ноде, синатре или го нужны гораздо более мощные скилы.

0 Comments

Ямл-переменные

June 19, 2017

Я обращал внимание на & и * в database.yml нового рейлс-приложения, но никогда не задумывался, что это можно использовать в произвольных yml-файлах. Например, если есть какой-нибудь пайплайн и хочется DRY в конфиге, то можно сделать так:

vars:
  env: &env
    SOME: 1
    ANOTHER: "foo"

pipeline:
  step1:
    cmd: "echo 1"
    env: *env

  step2:
    cmd: "echo 2"
    env: *env

В руби по крайней мере это работает, но насколько я понимаю, это часть синтаксиса.

irb> YAML.load(File.read("demo.yml"))
# {"vars"=>{"env"=>{"SOME"=>1, "ANOTHER"=>"foo"}},
# "pipeline"=>{
# "step1"=>{"cmd"=>"echo 1", "env"=>{"SOME"=>1, "ANOTHER"=>"foo"}},
# "step2"=>{"cmd"=>"echo 2", "env"=>{"SOME"=>1, "ANOTHER"=>"foo"}}}}
0 Comments

Фокусировка

June 16, 2017

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

Сейчас у меня другой принцип - не делать несущественные задачи, вообще. Если нет откровенной грязи (а откуда ей взяться когда 15 лет за клавиатурой?), то тормозящие страницы, некрасивые интерфейсы чаще всего симптомы какой-то более серьезной, системной проблемы. И скорее всего нужно сконцентрироваться на ней.

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

0 Comments

Trello API

June 15, 2017

У нас есть небольшая рейлс-приблуда для планирования спринтов, я ее решил интегрировать с трелло. Это первая интеграция в жизни, которую можно осуществить за 10 минут.

Client.js возвращает в браузер список карточек без всякого серверного кода. Мне нужен был только автокомплетишн названий карточек, с помощью jquery-ui autocomplete это делается элементарно. Любопытный подход у трелло.

0 Comments

js.erb

June 14, 2017

В одном внутреннем интерфейсе мне нужно было сделать а-ля crud без перезагрузки страницы. Конечно сегодня такие вещи положено делать на реакте и прочей js-радости, но я вспомнил про старичка js.erb.

Честно скажу, к рендеренигу кусков js на сервере я отношусь с презрением с тех пор как услышал термин unobtrusive javascript. Однако нафигачить небольшой интерфейс оказалось настолько быстро и приятно, что вы ещё будете настраивать вебпакер, даже если это 5.1, а я уже буду допивать свою первую пинту пенного.

Злоупотреблять этим не стоит (ни js.erb, ни пенным), но если нужно построить на рейлс почти spa для пары важных страниц - очень удобно.

0 Comments

Перейдите на другую сторону улицы

June 13, 2017

5 лет назад мне достался в наследство свежий, только начатый рейлс проект, который использовал sqlite в продакшене (и запущен был он в development-режиме, так как ребята не справились с компиляцией ассетов, и в качестве уникального ключа для событий использовался текущий таймпстемп в секундах, а-а-а-а). Под впечатлением я написал в Твиттер, что людей, которые используют sqlite в продакшене нужно лишать права голоса.

Шли годы, я поменял своё мнение, голосовать им можно, но встретив таких людей на улице, стоит перейти на другую стороны дороги.

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

0 Comments

Кадры решают все

June 9, 2017

В фильме про Гугл конечно все чистейшая правда кроме одной вещи, саппорт у Гугл самый омерзительный среди всех IT-компаний, которые я когда либо встречал. Дорваться до живого человека - искусство, дорваться до живого человека, который решит проблему - неведомое искусство.

0 Comments