Всем привет. Я — обычный программист, носящий лычку сеньора в одной обычной продуктовой компании. Я занимаюсь коммерческой разработкой около 10 лет, начинал с разработки прошивок для небольших железок, а сейчас изготавливаю бекенды различной степени сложности преимущественно на модных нынче Java/Kotlin. Эту профессию я выбрал по призванию — будучи ещё школьником все время что-то паял, программировал на бумажке (компьютера не было) и всё такое. Дальше шли профильное образование, работа в различных компаниях — именитых и обычных, зарубежных и отечественных. Поэтому я могу сказать, что являюсь идейным программистом. И никогда не понимал людей, которые ждут пятницу — всегда с удовольствием ходил на работу, какой бы ад там не творился. Так было по-крайней мере до недавнего времени. С какого-то момента я “сломался” и с трудом мог заставить пойти себя на некогда любимую работу. Меня и раньше что-то смущало, но теперь, когда мысли до конца оформились в голове — я могу сказать, что же не так с моим некогда уютным IT-мирком.
Грудинкин Павел @Hunt666
Ruby developer
Вопросы для собеседования — от кандидата к работодателю
4 min
27KВсе мы привыкли к тому, что на собеседованиях задают много вопросов. Обычно — работодатели кандидатам. Один из таких вопросов — “а у вас есть вопросы к нам?”. Довольно часто кандидаты не готовы к этому. И зря. Задавать вопросы работодателю — это совершенно нормально и даже необходимо. Лучше сразу уточнить все важные для вас аспекты работы, чем потом разочароваться. Более того, вопросы, заданные кандидатом, иногда даже учитываются как одна из характеристик кандидата. О чем спросил кандидат — о технологиях, о продукте или о процессах?
В этой статье я рассмотрю вопросы, часто задаваемые кандидатами разработчиками ПО. Я считаю, что эта статья будет полезна как самим кандидатам, так и рекрутерам, чтобы подготовиться к собеседованию.
В этой статье я рассмотрю вопросы, часто задаваемые кандидатами разработчиками ПО. Я считаю, что эта статья будет полезна как самим кандидатам, так и рекрутерам, чтобы подготовиться к собеседованию.
+13
Подборка бесплатных инструментов для разработчиков
28 min
187KTranslation
Сегодня мы представляем вашему вниманию адаптированную подборку инструментов (в том числе облачных) для разработчиков, которые позволяют создавать по-настоящему качественные проекты. Здесь представлены исключительно SaaS, PaaS и IaaS сервисы, предоставляющие бесплатные пакеты для разработчиков инфраструктурного ПО.
+82
Для всех и каждого. Лучшие альтернативы action-камерам GoPro
9 min
31KЗа последние несколько лет на рынке электроники для съёмки фото и видео выделился и прочно закрепился полноценный сегмент продуктов – action-камеры. О том, в чём достоинство таких девайсов на фоне классических средств съёмки, было сказано уже много, давно и подробно, в первую очередь – на примере камер компании GoPro: они компактные, удобны для путешествий и экстремальных вылазок, могут быть оборудованы различными аксессуарами, не говоря о главной фиче – возможностью понаблюдать за тайной жизнью своего кота.
Камера рекламирует сама себя – неудивительно, ведь GoPro делает камеры давно и очень качественно, пытаясь захватить все ниши сравнительно молодого рынка. Всё в ней хорошо… кроме цены – чтобы стать участником GoPro-сообщества, придётся неплохо потратиться. На помощь приходят китайские производители, благодаря которым у покупателей есть несколько альтернатив с не менее впечатляющей функциональностью и гораздо более доступной ценой. В преддверии зимнего action-сезона поговорим как раз об альтернативных камерах – добро пожаловать под кат.
Камера рекламирует сама себя – неудивительно, ведь GoPro делает камеры давно и очень качественно, пытаясь захватить все ниши сравнительно молодого рынка. Всё в ней хорошо… кроме цены – чтобы стать участником GoPro-сообщества, придётся неплохо потратиться. На помощь приходят китайские производители, благодаря которым у покупателей есть несколько альтернатив с не менее впечатляющей функциональностью и гораздо более доступной ценой. В преддверии зимнего action-сезона поговорим как раз об альтернативных камерах – добро пожаловать под кат.
+19
Заключаем трудовой договор о дистанционной работе
3 min
21KTutorial
С 2013 года Трудовой кодекс допускает прием на дистанционную работу. Порядок заключения и требования к форме трудового договора о дистанционной работе изложены в главе 49.1 ТК РФ. С требованиями к заполнению договора можно ознакомиться здесь.
Прошло 2 года с даты вступления поправок в силу. Какие вопросы возникают на практике в связи с заключением договора с удаленным работником?
В качестве основной проблемы применения договора с дистанционным работником работодатели называют необходимость использования усиленных квалифицированных электронных подписей при обмене сторон электронными документами.
Электронная переписка между дистанционным работником и работодателем признается юридически значимой только при удостоверении электронных документов (в том числе обязательных сообщений об их получении) такой электронной подписью.
Во-первых, не у всех сторон имеется такая электронная подпись. Особенно это касается частных лиц.
Во-вторых, такие подписи должны приниматься обеими сторонами трудового договора о дистанционной работе.
Например, в судебной практике имеется случай восстановления на работе удаленного работника, уволенного по собственному желанию на основании скана заявления, полученного работодателем по электронной почте без использования необходимой по закону электронной подписи.
Прошло 2 года с даты вступления поправок в силу. Какие вопросы возникают на практике в связи с заключением договора с удаленным работником?
Порядок заключения трудового договора о дистанционной работе
В качестве основной проблемы применения договора с дистанционным работником работодатели называют необходимость использования усиленных квалифицированных электронных подписей при обмене сторон электронными документами.
Электронная переписка между дистанционным работником и работодателем признается юридически значимой только при удостоверении электронных документов (в том числе обязательных сообщений об их получении) такой электронной подписью.
Во-первых, не у всех сторон имеется такая электронная подпись. Особенно это касается частных лиц.
Во-вторых, такие подписи должны приниматься обеими сторонами трудового договора о дистанционной работе.
Например, в судебной практике имеется случай восстановления на работе удаленного работника, уволенного по собственному желанию на основании скана заявления, полученного работодателем по электронной почте без использования необходимой по закону электронной подписи.
+8
Как я нашел лучший в мире язык программирования. Часть 2
6 min
102KПервая часть здесь. Продолжение:
Семь долбаных лет я ждал язык, который хоть как то ответит части моих желаний. За это время, и в фоновом режиме я препробывал всё. Всё — означает, всю херню общего назначения, и всю херню не совсем общего назначения. Нельзя прочувствовать язык только что-то прочитав про него и написав Hello World. Чтобы понять — надо хоть немного попрограммировать — написать какую нить вещь. И вот все это время, я в минуты отчаянья качал какой-нить “замечательный язык”, и пытался что-то написать. Какие-то вещи даже до сих пор крутятся в конторе (или крутились).
Семь долбаных лет я ждал язык, который хоть как то ответит части моих желаний. За это время, и в фоновом режиме я препробывал всё. Всё — означает, всю херню общего назначения, и всю херню не совсем общего назначения. Нельзя прочувствовать язык только что-то прочитав про него и написав Hello World. Чтобы понять — надо хоть немного попрограммировать — написать какую нить вещь. И вот все это время, я в минуты отчаянья качал какой-нить “замечательный язык”, и пытался что-то написать. Какие-то вещи даже до сих пор крутятся в конторе (или крутились).
+51
Как я нашел лучший в мире язык программирования. Часть 1
6 min
104KПоскольку дальше я буду жестко провоцировать троллей на тему языков программирования, и тем более назову лучший в мире (на данный момент) язык программирования (абсолютно лучший, то есть без всяких оговорок), от чего, обычно, у троллей срывает башню, рекомендую им и всем остальным ознакомиться с моим постом почти трех летней давности «О выборе языка программирования», все написаное там актуально и повторяться я не хочу.
Прочитали? Дальше будет про лучший в мире язык программирования, который я назову ближе к концу. Да, да, еще три дня назад я и не думал что единороги существуют — ведь каждый язык так или иначе сосет, и каждый сосет по-своему (хотя нет, есть и такие которые сосут всегда и везде, но о них не будем). Как инженер, я прекрасно понимал что в вопросе языка не возможно без разнообразных trade offs, начиная с garbage collected vs manual memory management, хотя Rust пытается съесть рыбку не присев на палку в этом вопросе, и так далее. Хоть мы и говорим о языках общего назначения, все они так или иначе позиционируют себя, фокусируясь на каких-то идеях, принципах, и целях, в которых они хороши, оставляя все не согласованное с такими принципами в лучшем случае возможными, но не эффективными и/или не удобными. Одним словом нецелесообразными. Однако язык, сочетающий в себе несочетаемое, есть.
Прочитали? Дальше будет про лучший в мире язык программирования, который я назову ближе к концу. Да, да, еще три дня назад я и не думал что единороги существуют — ведь каждый язык так или иначе сосет, и каждый сосет по-своему (хотя нет, есть и такие которые сосут всегда и везде, но о них не будем). Как инженер, я прекрасно понимал что в вопросе языка не возможно без разнообразных trade offs, начиная с garbage collected vs manual memory management, хотя Rust пытается съесть рыбку не присев на палку в этом вопросе, и так далее. Хоть мы и говорим о языках общего назначения, все они так или иначе позиционируют себя, фокусируясь на каких-то идеях, принципах, и целях, в которых они хороши, оставляя все не согласованное с такими принципами в лучшем случае возможными, но не эффективными и/или не удобными. Одним словом нецелесообразными. Однако язык, сочетающий в себе несочетаемое, есть.
+32
Несколько интересностей и полезностей для веб-разработчика #44
6 min
40KДоброго времени суток, уважаемые хабравчане. За последнее время я увидел несколько интересных и полезных инструментов/библиотек/событий, которыми хочу поделиться с Хабром.
Огромный проект, где спецификация веб-компонентов используется на полную катушку. ExpandJS это набор из более чем 80 компонентов и более 350 различных функций для работы с ними. И все это доступно как каркас, но так же и в трендовом Material Design стиле.
ExpandJS
Огромный проект, где спецификация веб-компонентов используется на полную катушку. ExpandJS это набор из более чем 80 компонентов и более 350 различных функций для работы с ними. И все это доступно как каркас, но так же и в трендовом Material Design стиле.
<!-- Import elements -->
<link rel="import" href="../mat-content.html">
<link rel="import" href="../mat-drawer.html">
<link rel="import" href="../mat-header-panel.html">
<link rel="import" href="../mat-shell.html">
<!-- Application scaffold -->
<mat-shell theme="...">
<mat-drawer>...</mat-drawer>
<mat-header-panel>
<mat-header>...</mat-header>
<mat-content>...</mat-content>
</mat-header-panel>
<mat-drawer right>...</mat-drawer>
</mat-shell>
+41
TheRole 3. Авторизация для Ruby on Rails
13 min
16KTutorial
TheRole — гем для организации ролевого распределения на RoR сайте (с панелью управления)
Еще один (1001-ый) способ обеспечить разграничение прав в web-приложении. Концепт данного решения был довольно давно реализован на PHP, и позже был переписан на ruby. Ввиду простоты реализации описанный подход может быть применим в любом MVC фреймворке вроде Rails, Laravel и.т.д.
В тексте я попытался подробно раскрыть, не только техническую интеграцию решения в приложение, но и причины предлагаемой реализации.
tl;dr
Еще один (1001-ый) способ обеспечить разграничение прав в web-приложении. Концепт данного решения был довольно давно реализован на PHP, и позже был переписан на ruby. Ввиду простоты реализации описанный подход может быть применим в любом MVC фреймворке вроде Rails, Laravel и.т.д.
В тексте я попытался подробно раскрыть, не только техническую интеграцию решения в приложение, но и причины предлагаемой реализации.
+12
Сеть на кристалле — мини-интернет внутри процессора
4 min
12KМы уже смирились с тем, что рост тактовой частоты процессоров остановился и производители пошли по пути распараллеливания вычислений. Однако и число ядер типичного процессора общего назначения, быстро одолев отметки 2 и 4, остановилось в районе 8. Некоторые даже собрались хоронить закон Мура.
У такого застоя есть объективная причина. Если разница между 2, 4 или 8 ядрами скорее количественная, то уже 16-ядерный процессор сталкивается с принципиальными ограничениями традиционной архитектуры. Дело в том, что на протяжении последних нескольких десятилетий основой коммуникации между отдельными IP-блоками чипа служила шина. Пока блоков было немного, она справлялась, но когда начали плодиться ядра, эта архитектура исчерпала себя. Шина представляет собой общую среду передачи данных, к которой подключено несколько блоков процессора. В каждый момент времени один блок может передавать данные, а все остальные — получать. Если нескольким блокам нужно передавать одновременно — возникает коллизия, а значит и задержка. При числе ядер больше восьми задержки становятся неприемлемо большими, практически полностью перечёркивая преимущества параллельной работы нескольких ядер.
Число ядер можно увеличить ещё немного, разделив шину на несколько сегментов, объединённых мостами, однако это скорее «костыль», который плохо масштабируется и не решает основную проблему. Настоящее решение, которое позволит объединять сотни блоков на одном чипе — это хорошо известная всем сеть с коммутацией пакетов, или Network on Chip.
У такого застоя есть объективная причина. Если разница между 2, 4 или 8 ядрами скорее количественная, то уже 16-ядерный процессор сталкивается с принципиальными ограничениями традиционной архитектуры. Дело в том, что на протяжении последних нескольких десятилетий основой коммуникации между отдельными IP-блоками чипа служила шина. Пока блоков было немного, она справлялась, но когда начали плодиться ядра, эта архитектура исчерпала себя. Шина представляет собой общую среду передачи данных, к которой подключено несколько блоков процессора. В каждый момент времени один блок может передавать данные, а все остальные — получать. Если нескольким блокам нужно передавать одновременно — возникает коллизия, а значит и задержка. При числе ядер больше восьми задержки становятся неприемлемо большими, практически полностью перечёркивая преимущества параллельной работы нескольких ядер.
Число ядер можно увеличить ещё немного, разделив шину на несколько сегментов, объединённых мостами, однако это скорее «костыль», который плохо масштабируется и не решает основную проблему. Настоящее решение, которое позволит объединять сотни блоков на одном чипе — это хорошо известная всем сеть с коммутацией пакетов, или Network on Chip.
+118
Показать товар лицом
14 min
5.9KВ этой статье я, на примере редизайна главной страницы cplaza.ru, расскажу об одном из принципов разработки сайтов: «показать товар лицом».
В общих словах этот принцип можно сформулировать так: «Надо сразу дать понять посетителю куда он попал и что интересного здесь можно найти». В случае с интернет-магазином принцип превратится во что-то вроде: «Покажите свой товар и почему нужно купить его у вас». Но несмотря на простоту этого принципа, его часто безосновательно нарушают.
Под катом вы найдёте вредные советы про дизайн сайтов, разбор существующего дизайна главной страницы cplaza.ru, рассказ о том, какие блоки могут оказаться более полезными для этой страницы, а в конце я покажу пример переработанной главной.
В общих словах этот принцип можно сформулировать так: «Надо сразу дать понять посетителю куда он попал и что интересного здесь можно найти». В случае с интернет-магазином принцип превратится во что-то вроде: «Покажите свой товар и почему нужно купить его у вас». Но несмотря на простоту этого принципа, его часто безосновательно нарушают.
Под катом вы найдёте вредные советы про дизайн сайтов, разбор существующего дизайна главной страницы cplaza.ru, рассказ о том, какие блоки могут оказаться более полезными для этой страницы, а в конце я покажу пример переработанной главной.
+27
+397
Своим высоким IQ вы убьете ваш стартап
3 min
3.2KЭто мой перевод статьи Макса Клейна (Max Klein) — Your high IQ will kill your startup. Чесно говоря я не знаю кто он. Просто просматривая утром Delicious hotlist увидел его статью и, прочитав ее, захотел поделиться с вами.
______________________________________________________________________
В 2004, будучи в Бразилии, я спускалcя по холму в Лапа, чтобы пообедать. Со мной был друг, с которым я познакомился в гостинице — звали его Офер. Темой нашего разговора был интеллект и его роль в успехе.
На встречу нам, со стороны дороги, вышел мужчина. В одной руке он держал нож, а в другой бутылку. По португальски он велел нам отдать свои вещи. Я был растерян и не знал, что делать. А Офер начал быстро говорить ему, чтобы тот нас не грабил.
Должен вам сказать, что Офер был израильским солдатом. Он ненавидел насилие в любой форме, но сам умел быть жестким.
______________________________________________________________________
В 2004, будучи в Бразилии, я спускалcя по холму в Лапа, чтобы пообедать. Со мной был друг, с которым я познакомился в гостинице — звали его Офер. Темой нашего разговора был интеллект и его роль в успехе.
На встречу нам, со стороны дороги, вышел мужчина. В одной руке он держал нож, а в другой бутылку. По португальски он велел нам отдать свои вещи. Я был растерян и не знал, что делать. А Офер начал быстро говорить ему, чтобы тот нас не грабил.
Должен вам сказать, что Офер был израильским солдатом. Он ненавидел насилие в любой форме, но сам умел быть жестким.
+169
Спать мало, но правильно?
7 min
899KНавеяно этим постом от юзера case. Пост не новый, и на главную он не попал.
Но я вот наткнулся на него сегодня и решил написать кое-что о сне. Уверен, что это будет полезно многим хабравчанам, да и случайным читателям тоже.
Но я вот наткнулся на него сегодня и решил написать кое-что о сне. Уверен, что это будет полезно многим хабравчанам, да и случайным читателям тоже.
+627
Эпик фэйл журнала MAXIM, или Привет, лузеры
3 min
2.3KВ октябрьском номере журнала «Максим» был опубликован тест «Юзер или лузер», смысл которого состоял в следующем: нужно ответить на несколько вопросов «про интернет», а потом посчитать баллы и определить, юзер ты или лузер. Это — пестня, да еще и с припевом. По итогам этого теста можно смело утверждать, что редакция журнала «Максим» — лузеры. Вот несколько примеров:
Вопрос №4 — какие есть ограничения на объём почтового ящика. В ответах редакция любезно сообщает, что основные почтовые сервисы (Яндекс, Мэйл и, внимание, Gmail) не ограничивают объем ящика. Интересно, что за дебилы, дорогая редакция, покупают тогда у гугла дополнительное место по 5 баксов? В настоящее время бесплатный объем ящика на гмэйле — около 7 гигабайт (http://mail.google.com/support/bin/answer.py?hl=en&answer=6558).
Вопрос №5 — если Бог внезапно отключит тебе http-протокол, будут ли работать Skype, WoW и The Bat. В ответах редакция сообщает, что будут, ибо никто из них http-протокол не использует, и вообще, цитирую, «HTTP всерьез устарел». Дорогая редакция, установите себе сниффер и убедитесь, что Скайп шлет свои сервисные запросы по HTTP. WoW не проверял.
Вопрос №4 — какие есть ограничения на объём почтового ящика. В ответах редакция любезно сообщает, что основные почтовые сервисы (Яндекс, Мэйл и, внимание, Gmail) не ограничивают объем ящика. Интересно, что за дебилы, дорогая редакция, покупают тогда у гугла дополнительное место по 5 баксов? В настоящее время бесплатный объем ящика на гмэйле — около 7 гигабайт (http://mail.google.com/support/bin/answer.py?hl=en&answer=6558).
Вопрос №5 — если Бог внезапно отключит тебе http-протокол, будут ли работать Skype, WoW и The Bat. В ответах редакция сообщает, что будут, ибо никто из них http-протокол не использует, и вообще, цитирую, «HTTP всерьез устарел». Дорогая редакция, установите себе сниффер и убедитесь, что Скайп шлет свои сервисные запросы по HTTP. WoW не проверял.
+240
Матрица компетенций Ruby on Rails разработчика
4 min
9.2KКак начинающему Rails разработчику понять, в какую сторону копать, чтобы как можно быстрее стать опытным программистом? Понятно, что нужно работать, работать и еще раз работать. Но кроме этого важен горизонт, который даст понять, в какую же сторону нужно идти по дороге к званию профессионала.
Два месяца назад мы запустили оффлайн&онлайн курсы в Харькове по Ruby on Rails для начинающих RubyBursa. Из особенностей — половина занятий было в учебном классе, половина в формате вебинара. Мы поставили жесткие условия выполнения домашних заданий и за первое невыполнение участники получали желтую карточку, за второе — красное и выбывали с курсов. Такие «драконовские методы» позволили 35 из 40 участников дойти до конца со 100% выполнением всех домашних задач.
Некоторые ученики в процессе учебы интересовались: «а что же дальше?». Наш преподаватель Оксана специально в виде ответа на этот вопрос подготовила пробную версию матрицы компетенции Ruby разработчика. Не претендуем на академичность и понимаем возможную спорность предложенной схемы.
Определите сколько баллов у вас есть суммарно по всем направлениям и подведите итог в конце статьи:
Два месяца назад мы запустили оффлайн&онлайн курсы в Харькове по Ruby on Rails для начинающих RubyBursa. Из особенностей — половина занятий было в учебном классе, половина в формате вебинара. Мы поставили жесткие условия выполнения домашних заданий и за первое невыполнение участники получали желтую карточку, за второе — красное и выбывали с курсов. Такие «драконовские методы» позволили 35 из 40 участников дойти до конца со 100% выполнением всех домашних задач.
Некоторые ученики в процессе учебы интересовались: «а что же дальше?». Наш преподаватель Оксана специально в виде ответа на этот вопрос подготовила пробную версию матрицы компетенции Ruby разработчика. Не претендуем на академичность и понимаем возможную спорность предложенной схемы.
Определите сколько баллов у вас есть суммарно по всем направлениям и подведите итог в конце статьи:
+1
30 полезных сервисов для веб-разработчика
2 min
163KРешил собрать сервисы, которые могут быть полезны веб-разработчикам и дизайнерам. Буду рад, если кто-то найдет для себя полезный сервис. Осторожно, под катом куча картинок!
+132
Deploy приложения на RoR 4 с помощью Capistrano 3
16 min
63KПредставьте: Вы — веб-разработчик, который только недавно освоил Ruby on Rails. И тут Ваш первый проект подходит к стадии, когда его нужно выложить в интернет.
Вы, конечно, можете залить его на Heroku, но тамошние цены немного кусаются. Остается только купить VPS, настроить его и выложить проект туда.
«Что может быть проще? Найду какой-нибудь гайд, да следаю всё по нему» — подумаете Вы. Вот только гайдов, которые не просто выкладывают команды, но и объясняющие, что эти команды делают, — единицы, да и те используют уже устаревшую вторую версию Capistrano.
Поэтому я решил написать свой гайд, в котором постараюсь подробно рассмотреть:
- Первичную настройку сервера
- Установку и настройку nginx (с модулем PageSpeed), postgresql, redis
- Установку rvm, rails
- Настройку гема foreman для управления процессами Вашего приложения
- Настройку сервера Unicorn
- Настройку гема Capistrano (v3.1) для автоматизации деплоя
Я надеюсь, что этот гайд будет полезен не только новичкам, но и разработчикам со стажем.
+19
Обучение онлайн
1 min
34KДля изучающих Ruby / Rails, будет полезно ознакомиться с подборкой бесплатных онлайн курсов, туториалов и интерактивных занятий, посвященных языку программирования Ruby и фреймворку Ruby on Rails.
+31
Как сверстать веб-страницу. Часть 1
13 min
1.2MУважаемый читатель, этой статьей я открываю цикл статей, посвященных вёрстке.
В первой части будет описано, как это сделать с помощью стандартных средств на чистом HTML и CSS. В последующих частях рассмотрим как сделать тоже самое, но с помощью современных фреймворков и CMS.
Преимущество данной верстки состоит в том, что код получается более «чистым», а значит быстрее загружается и легче изменяется под специфические нужды. Недостаток такой верстки заключается в том, что она требует значительно больше времени, чем при использовании фреймворков.
Итак, давайте приступим. В качестве нашего подопытного мы возьмем бесплатный psd шаблон Corporate Blue от студии Pcklaboratory.
В первой части будет описано, как это сделать с помощью стандартных средств на чистом HTML и CSS. В последующих частях рассмотрим как сделать тоже самое, но с помощью современных фреймворков и CMS.
Часть 1. Верстка стандартными средствами
Преимущество данной верстки состоит в том, что код получается более «чистым», а значит быстрее загружается и легче изменяется под специфические нужды. Недостаток такой верстки заключается в том, что она требует значительно больше времени, чем при использовании фреймворков.
Итак, давайте приступим. В качестве нашего подопытного мы возьмем бесплатный psd шаблон Corporate Blue от студии Pcklaboratory.
+85
Information
- Rating
- Does not participate
- Location
- Санкт-Петербург, Санкт-Петербург и область, Россия
- Date of birth
- Registered
- Activity