Я бы не был так однозначен по второму пункту. Выбирая между фреймворком и велосипедом, нужно оценивать временные затраты на освоение/настройку/допиливание первого и написания/отладки второго. Чем выше требования к ПО и чем выше квалификация девелоперов, тем чаще пишутся свои библиотеки.
Сеньорных программистов на собеседованиях часто вообще про фреймворки не спрашивают — спрашивают про языки программирования, концепции написания и оптимизации программ, опыт реальной разработки, мнения о правильной организации процесса разработки ПО.
Уже готовые фреймворки универсальны — за что часто приходится расплачиваться эффективностью, гибкостью и простотой.
Всё понятно же. Современный тренд — это сбор и обработка максимального количества информации о пользователе. Собранную статистику можно использовать для лучшего понимания аудитории, для улучшения сервиса, для предсказания будущих потребностей, для таргетирования рекламы… ну или просто продать. Информация по звонкам с привязкой к местности может быть использована, например, для прогнозирования спроса на некоторые товары.
Ну да, очередной пример полезности теории графов. Эта задача сводится к поиску кратчайшего пути в графе. Если хранить граф в матричном виде, то получаем для 10к слов 10к * 10к бит = 12 мегабайт. С учетом неориентированности графа, память можно уполовинить до 6 мегабайт.
Админы в этом плане похожи на тестировщиков. В принципе, программисты могут выполнять обязанности и тех, и тех, но нужен особый склад ума, чтобы делать это эффективно. Больше скурпулезности, въедливости и аккуратности.
Валидатор со списком ошибок крайне полезен в B2B — мало что бесит юзера больше, чем нажатие на кнопку «сохранить» после каждой исправленной ошибки. Особенно если форма на экран не влазит.
Сам активно использую груви в качестве основного скриптового языка — Grape позволяет по-быстрому и страничку скачать/отпарсить, и данные в базу залить, и по файловой системе пройтись.
Правда, я использую обычные скрипты #!/usr/bin/groovy и у меня всё работает. В чем преимущество запуска через java -jar?
Частое «я» означает противопоставление себя команде. «я сам принял решение» — другие будут с этим жить и вряд ли будут счастливы по этому поводу. «исходя из своих знаний и представлений» — самоуверенность, далеко не факт, что вы самый информированный. «ответственность на мне» — звучит как «если это писал не я то я за это не отвечаю».
Конечно, речь идет о команде сеньоров, но и к новичкам тоже имеет смысл прислушиваться.
Я на vpsville сижу — за полгода ни одного даунтайма и очень хорошая поддержка — прямо на сайте есть чат, в котором всегда кто-то сидит. Разве что цены у них не совсем low-end.
Поднял по-быстрому тестовый сервер. Машина с 20 GB HDD стоит то ли 200, то ли 265 рублей (смотря кому верить — сайту или биллингу). Пинги из москвы хорошие, результаты mtr мне нравятся, сеть показывает честные 100 мегабит.
Из минусов — уродливая и криво работающая админка. Но это же не главное для лоукост бокса, однозначно.
Сеньорных программистов на собеседованиях часто вообще про фреймворки не спрашивают — спрашивают про языки программирования, концепции написания и оптимизации программ, опыт реальной разработки, мнения о правильной организации процесса разработки ПО.
Уже готовые фреймворки универсальны — за что часто приходится расплачиваться эффективностью, гибкостью и простотой.
val valid_a = ['object', 'string', 'number']
val valid_b = valid_a
val valid_c = ['string', 'undefined']
//список всех возможных валидных троек для параметров
val tuples = decartMultiplication(valid_a, valid_b, valid_c, (a, b, c) -> Tuple3(a, b, c))
val dispatchMap = Map<Tuple3, Closure>
tuples.forEach(tuple -> dispatchMap.put(tuple, (a, b, c) -> call_function(a, b, c))
//usage
val dispatcher = dispatchMap.get(Tuple3(a.type, b.type, c.type))
if (dispatcher != null) dispatcher(a, b, c) else call_badargs(a, b, c)
Вкратце, делаем ассоциативный массив [множество типов аргументов] -> лямбда
Плюсы — мало букв. Минусы — кол-во элементов в мапе растет весьма быстро.
Правда, я использую обычные скрипты #!/usr/bin/groovy и у меня всё работает. В чем преимущество запуска через java -jar?
Конечно, речь идет о команде сеньоров, но и к новичкам тоже имеет смысл прислушиваться.
Из минусов — уродливая и криво работающая админка. Но это же не главное для лоукост бокса, однозначно.