Что ж, перед грядущими выходными предлагаю новое видео о регулярных выражениях. 🤟 Мы поговорим о том, как в регулярных выражениях найти любой символ, являющийся частью слова (\w), а также цифры (\d), пробелы (\s), границы слов (\b) и прочее. Помимо этого, поговорим об использовании квадратных скобок, которые позволяют реализовывать поиск символа в заданном диапазоне (это особенно удобно при работе с кириллицей). https://www.youtube.com/watch?v=COCFz3pTMhw
YouTube
Регулярные выражения #3 | Специальные символы
Сегодня мы поговорим о том, как в регулярных выражениях найти любой символ, являющийся частью слова (\w), а также цифры (\d), пробелы (\s), границы слов (\b) и прочее. Помимо этого, поговорим об использовании квадратных скобок, которые позволяют реализовывать…
Всем привет! Нашёл интересное решение для управления приложениями на Heroku через терминал. Название, конечно, у решения странноватое, но выглядит интересно https://github.com/PierreKieffer/htui
GitHub
GitHub - PierreKieffer/htui: Heroku Terminal User Interface
Heroku Terminal User Interface. Contribute to PierreKieffer/htui development by creating an account on GitHub.
Всем привет! Возможно, кого-то заинтересует вакансия разработчика Ruby (друзья ищут), краткое описание:
Нужен человек, который много-много работал с mosquitto и имеет действительно глубокие знания. и при этом работал с рубями. Сообщения публикуются в брокере, а из брокера не все вычитываются подписчиком.
В логах москито есть запсиси, что сообщение было отправлено бэку.
QoS не настроено и оперативно настроить не можем.
Проверили всю инфраструктурную часть, проверили сеть, проверили ulimit, почитали strace - в нем ничего страшнее recvq -1 eagain нет
Нужен человек, который много-много работал с mosquitto и имеет действительно глубокие знания. и при этом работал с рубями. Сообщения публикуются в брокере, а из брокера не все вычитываются подписчиком.
В логах москито есть запсиси, что сообщение было отправлено бэку.
QoS не настроено и оперативно настроить не можем.
Проверили всю инфраструктурную часть, проверили сеть, проверили ulimit, почитали strace - в нем ничего страшнее recvq -1 eagain нет
Что ж, друзья, вот и я чипировался... точнее вакцинировался. Пока полёт нормальный, даже место укола не болит. Процесс организован вполне достойно, хотя это, конечно, сильно зависит от страны. Новые видео эту неделю выпускать не планирую (во всяком случае, до пятницы), немного приду в себя, а потом продолжим. Если интересно, расскажу подробнее. Будьте здоровы 🙌
Пока готовится новое видео, можно попробовать отгадать вот такой вопрос в стиле спортивного "Что? Где? Когда?", который я придумал буквально только что.
На входе в одно заведение автор вопроса увидел табличку "ОНО длится всего день, а воспоминания останутся на всю жизнь".
ОНО - это дословный перевод названия известной комедийной кинотрилогии. В российском прокате, однако, эта кинотрилогия шла под совсем другим названием. А какое место упоминалось в этом локализированном названии? 🤓
На входе в одно заведение автор вопроса увидел табличку "ОНО длится всего день, а воспоминания останутся на всю жизнь".
ОНО - это дословный перевод названия известной комедийной кинотрилогии. В российском прокате, однако, эта кинотрилогия шла под совсем другим названием. А какое место упоминалось в этом локализированном названии? 🤓
И ещё немного забавного: тетрис на TypeScript, который каждый раз пытается выбрасывать вам самые неподходящие фигуры. Всем отличных выходных! 🤟 https://github.com/qntm/hatetris
GitHub
GitHub - qntm/hatetris: Tetris which always gives you the worst piece
Tetris which always gives you the worst piece. Contribute to qntm/hatetris development by creating an account on GitHub.
Вот буквально только что появился вопрос по одной библиотеке: в ней используются новые методы
delete_prefix и delete_suffix, которые не поддерживаются в Ruby < 2.5. Что делать? Самым простым решением будет открыть класс String и самостоятельно написать реализацию этих методов (пусть даже и несколько наивную):class String
def delete_suffix(str)
sub %r{#{Regexp.quote(str)}\z}, ''
end
def delete_prefix(str)
sub %r{\A#{Regexp.quote(str)}}, ''
end
end
Всем привет! Раз уж зашла речь в чате, хотел поделиться вот таким интересным компилятором из Ruby в JavaScript, который позволяет писать весь код фронт-энда на Руби https://github.com/opal/opal Там есть и некоторые другие фичи, так что посмотрите, если не слышали о таком решении 🙌
GitHub
GitHub - opal/opal: Ruby ♥︎ JavaScript
Ruby ♥︎ JavaScript. Contribute to opal/opal development by creating an account on GitHub.
🌚1
Всем привет! Ещё немного вакансий в ленту, на этот раз в мою компанию. Разыскиваются бодрые разработчики и инженеры на разные позиции (тим лиды, программисты React, Kotlin, TS и т.д., смотри ссылку), причём работа 100% удалённая. https://lokalise.com/careers Подробности в чат или в личные сообщения
Lokalise
Careers | Lokalise
We are a rapidly growing SaaS company, looking for new team members who want to grow with us. Take a look at our job openings and apply to join Lokalise.
Всем привет! Сегодня хотел поделиться решением Cucumber, которое позволяет внедрять подход behavior-driven development (BDD), то есть описывать требования к приложению на обычном английском языке. При этом описанные требования затем выполняются как авто-тесты. https://cucumber.io/
Небольшой лайфхак, позволяющий настроить автокомпиляцию SCSS —> CSS:
1. Установите NodeJS с сайта https://nodejs.org/ (обычно версия LTS подходит всем)
2. В папке со своим проектом для изучения SCSS создайте две директории с названиями scss и css. В первую поместите свои файлы SCSS. Вторая директория будет содержать автоматически скомпилированные файлы.
3. В папке со своим проектом (не в директории scss или css, а прямо в корне вашего проекта) также создайте файл package.json со следующим содержимым:
{
"name": "sample",
"version": "1.0.0",
"noscripts": {
"scss": "sass --watch scss:css"
},
"author": "",
"license": "ISC",
"dependencies": {
"sass": "^1.34.0"
}
}
4. Откройте командую строку (терминал) и перейдите в вашу директорию с проектом, например cd ~/docs/my_project
5. Запустите команду npm install, которая установит библиотеку sass - она и будет выполнять компиляцию.
6. После установки запустите команду npm run scss - она "повиснет" в командой строке и будет ожидать любых изменений файлов в папке scss. Как только изменения сделаны и файл в этой папке сохранён, произойдёт автоматическая компиляция в папку css. Для остановки процесса используйте комбинацию клавиш Ctrl+C или Cmd+C (либо Ctrl+Break, Cmd+Break)
1. Установите NodeJS с сайта https://nodejs.org/ (обычно версия LTS подходит всем)
2. В папке со своим проектом для изучения SCSS создайте две директории с названиями scss и css. В первую поместите свои файлы SCSS. Вторая директория будет содержать автоматически скомпилированные файлы.
3. В папке со своим проектом (не в директории scss или css, а прямо в корне вашего проекта) также создайте файл package.json со следующим содержимым:
{
"name": "sample",
"version": "1.0.0",
"noscripts": {
"scss": "sass --watch scss:css"
},
"author": "",
"license": "ISC",
"dependencies": {
"sass": "^1.34.0"
}
}
4. Откройте командую строку (терминал) и перейдите в вашу директорию с проектом, например cd ~/docs/my_project
5. Запустите команду npm install, которая установит библиотеку sass - она и будет выполнять компиляцию.
6. После установки запустите команду npm run scss - она "повиснет" в командой строке и будет ожидать любых изменений файлов в папке scss. Как только изменения сделаны и файл в этой папке сохранён, произойдёт автоматическая компиляция в папку css. Для остановки процесса используйте комбинацию клавиш Ctrl+C или Cmd+C (либо Ctrl+Break, Cmd+Break)
nodejs.org
Node.js — Run JavaScript Everywhere
Node.js® is a free, open-source, cross-platform JavaScript runtime environment that lets developers create servers, web apps, command line tools and noscripts.
Итак, наконец-то дошли руки до первого видео о Ruby on Rails, в котором мы настроим рабочую среду, установим всё необходимое и создадим первое приложение :) https://www.youtube.com/watch?v=6_ek4hokiak
YouTube
Ruby on Rails 6/7, урок #1 | Установка и создание приложения
Уроки по Ruby on Rails 6 и Rails 7 (aka "самоучитель Ruby on Rails") - популярному web-фреймворку. Сегодня мы поговорим о том, как установить весь необходимый софт, настроить рабочую среду, и создать несложное приложение Rails. Следующий урок по Ruby on Rails…
Это видео продолжает серию уроков о регулярных выражениях (regular expressions). В нём мы поговорим о том, что такое квантификаторы (quantifiers) и зачем они нужны. Кроме того, мы узнаем, чем жадные квантификаторы (greedy) отличаются от ленивых (lazy) и сверхжадных (они же ревнивные, possessive). Звучат эти слова как какие-то оскорбления, но на самом деле это разные принципы работы квантификаторов, правильно используя которые, вы можете добиваться довольно впечатляющих результатов. https://www.youtube.com/watch?v=bAM2-e3hVKg
YouTube
Регулярные выражения #4 | Квантификаторы: жадные, ленивые, твои
Это видео продолжает серию уроков о регулярных выражениях (regular expressions). В нём мы поговорим о том, что такое квантификаторы (quantifiers) и зачем они нужны. Кроме того, мы узнаем, чем жадные квантификаторы (greedy) отличаются от ленивых (lazy) и сверхжадных…
GitHub проводит новый опрос, можно поучаствовать при желании https://github.surveymonkey.com/r/C7QDQNX 🤓
Surveymonkey
Online Survey Software: Closed Survey
This survey is currently closed. Please contact the author of this survey for further assistance.
Blazer - это не только напиток из девяностых, но и инструмент для анализа данных с помощью SQL в приложениях Ruby on Rails 😄 https://github.com/ankane/blazer
GitHub
GitHub - ankane/blazer: Business intelligence made simple
Business intelligence made simple. Contribute to ankane/blazer development by creating an account on GitHub.
Небольшой пост-рассуждение под вечер - это просто мысли вслух, а вовсе не руководство к действию. Скажу честно, я не очень люблю слэнг, в том числе и программистский (возможно, вы заметили, что в видео я стараюсь его по возможности избегать). Дело в том, что большинство терминов и понятий можно вполне адекватно передать нормальным русским языком, а не использовать странные слова-гибриды, заимствованные из других языков - в основном, из английского. При этом я ничего не имею против заимствований как таковых; больше того, это весьма важный аспект в развитии любого языка. Но заимствование, как мне кажется, происходит всё-таки тогда, когда некое понятие невозможно передать на своём языке, либо когда оно за долгие годы укореняется настолько прочно, что не использовать его уже невозможно.
Казалось бы, зачем вообще говорить грамотно, ведь все и так всё понимают? Безусловно, но грамотная речь, на мой взгляд, и мысли приводит в порядок, и держит в тонусе (не позволяет мыслить одними лишь шаблонами и взаимодействовать на неком "автопилоте"), и позволяет более точно доносить свою точку зрения. Можно, конечно, обходиться и 30-40 словами, как Эллочка-людоедочка (ещё и сдабривая их постоянными "это" и "типа"), но ведь такая речь звучит совершенно убого! Бездумное заимствование и обилие слэнговых слов тоже, как мне кажется, не делают речь красивее. Кто-то - в основном, конечно, подростки - использует слэнговые слова потому, что это "модно". Однако такая мода преходяща: никто уже не говорит "превед, кросавчег", хотя буквально 10-12 лет назад это был последний писк моды (возможно, пищала она в ужасе). Следует ли ей следовать? Никакого смысла, если вы постоянно не вращаетесь в соответствующих кругах. Это будет похоже на попытку прохилять за своего - кстати, и вот это слово "прохилять" давным-давно вышло из моды, а в СССР оно значило что-то вроде "пройти" или "быть подходящим".
Это подводит нас к логичному вопросу: надо ли следовать моде и использовать программисткий слэнг, если ты постоянно вращаешься в этой среде? На мой взгляд, нет, но с небольшим примечанием мелким текстом. Например, вместо "баг-репорт" можно сказать "сообщение об ошибке". Вместо "вьюха" (это слово меня убивает) - "представление". Вместо "заапрувил" - "подтвердил". Ну, и так далее. Не поверите, но вас прекрасно поймут; во всяком случае, меня обычно понимают без проблем. Однако (!) знать о существовании подобных слэнговых слов и понимать их значение всё-таки надо, дабы не казаться белой вороной. Но при этом никто не мешает говорить правильно лично вам, и потому в своих видео я буду стараться прививать зрителям подобную привычку. Ну, а следовать ей или нет - это уже ваше дело :)
P.S. Кстати, ведь и программистские слэнговые словечки тоже периодически выходят из моды благодаря быстрому развитию технологий. Кто-то уже и не вспомнит, что "багланд" - это компания "Борланд", которая делала разнообразное ПО, "блинница" - это привод для компакт-дисков, а "флоппи" - это такая дискета (разработчики помоложе их и не использовали).
Казалось бы, зачем вообще говорить грамотно, ведь все и так всё понимают? Безусловно, но грамотная речь, на мой взгляд, и мысли приводит в порядок, и держит в тонусе (не позволяет мыслить одними лишь шаблонами и взаимодействовать на неком "автопилоте"), и позволяет более точно доносить свою точку зрения. Можно, конечно, обходиться и 30-40 словами, как Эллочка-людоедочка (ещё и сдабривая их постоянными "это" и "типа"), но ведь такая речь звучит совершенно убого! Бездумное заимствование и обилие слэнговых слов тоже, как мне кажется, не делают речь красивее. Кто-то - в основном, конечно, подростки - использует слэнговые слова потому, что это "модно". Однако такая мода преходяща: никто уже не говорит "превед, кросавчег", хотя буквально 10-12 лет назад это был последний писк моды (возможно, пищала она в ужасе). Следует ли ей следовать? Никакого смысла, если вы постоянно не вращаетесь в соответствующих кругах. Это будет похоже на попытку прохилять за своего - кстати, и вот это слово "прохилять" давным-давно вышло из моды, а в СССР оно значило что-то вроде "пройти" или "быть подходящим".
Это подводит нас к логичному вопросу: надо ли следовать моде и использовать программисткий слэнг, если ты постоянно вращаешься в этой среде? На мой взгляд, нет, но с небольшим примечанием мелким текстом. Например, вместо "баг-репорт" можно сказать "сообщение об ошибке". Вместо "вьюха" (это слово меня убивает) - "представление". Вместо "заапрувил" - "подтвердил". Ну, и так далее. Не поверите, но вас прекрасно поймут; во всяком случае, меня обычно понимают без проблем. Однако (!) знать о существовании подобных слэнговых слов и понимать их значение всё-таки надо, дабы не казаться белой вороной. Но при этом никто не мешает говорить правильно лично вам, и потому в своих видео я буду стараться прививать зрителям подобную привычку. Ну, а следовать ей или нет - это уже ваше дело :)
P.S. Кстати, ведь и программистские слэнговые словечки тоже периодически выходят из моды благодаря быстрому развитию технологий. Кто-то уже и не вспомнит, что "багланд" - это компания "Борланд", которая делала разнообразное ПО, "блинница" - это привод для компакт-дисков, а "флоппи" - это такая дискета (разработчики помоложе их и не использовали).
🤝1
Продолжаем уроки по популярному web-фреймворку Ruby on Rails 6. Сегодня мы узнаем о том, зачем нужны миграции (migrations), как их создавать и применять/откатывать, что такое модели (models), как с ними работать, а также немного поработаем с представлениями в Rails. https://www.youtube.com/watch?v=XUBi7biNgCY
YouTube
Ruby on Rails 6/7 урок #2 | Миграции и модели
Продолжаем уроки по популярному web-фреймворку Ruby on Rails 6/7 (aka "самоучитель Ruby on Rails")! Сегодня мы узнаем о том, зачем нужны миграции (migrations), как их создавать и применять/откатывать, что такое модели (models), как с ними работать, а также…
Хотел поделиться впечатлениями о работе с генератором статических сайтов Hugo (за последние пару лет, так скажем).
Что вообще генератор статических сайтов (static site generator, SSG)? Это фреймворк, который позволяет создать одну или несколько "базовых страниц" (layouts) на html/css/js, а также определённое количество материалов (например, статей в блоге), которые обычно написаны на markdown (что-то типа представлений в Rails или других фреймворках), иногда со вставками на html. Такие материалы может создавать и человек, не знакомый с программированием, что довольно удобно. Далее запуск специальной команды SSG собирает из этих "кирпичиков" набор обычных страниц html, которые можно разместить на любом хостинге - например, на firebase (в моём случае это было бесплатно).
Изначально стандартом де-факто для SSG был Jekyll, написанный на Ruby - собственно, GitHub Pages до сих пор его использует. Это хороший фреймворк, но не слишком шустрый, если нужно генерировать множество страниц. Поэтому для последнего проекта я решил задействовать Hugo, написанный на Go https://gohugo.io/, и в целом остался доволен. В Hugo используются все те же концепции, что и в Jekyll, но вот генерация страниц (и перезагрузка "на лету") происходит значительно быстрее, что не может не радовать. В общем, если вам потребуется сделать не слишком сложный проект в духе блога, сайта-визитки, информационного ресурса, то очень советую Hugo.
Кстати, насколько мне известно, блог известного сайта Sitepoint, например, теперь тоже полностью переведён на Hugo. Возможно, в будущем сделаю серию видео по этой технологии, так как тема действительно довольно интересная. P.S. Был также опыт работы с Hexo, но он показался сыроватым, во всяком случае год назад. Да и документации на английском маловато, так как изначально это китайская поделка. Если у кого-то был опыт работы с другими SSG - поделитесь, интересно 🙌
Что вообще генератор статических сайтов (static site generator, SSG)? Это фреймворк, который позволяет создать одну или несколько "базовых страниц" (layouts) на html/css/js, а также определённое количество материалов (например, статей в блоге), которые обычно написаны на markdown (что-то типа представлений в Rails или других фреймворках), иногда со вставками на html. Такие материалы может создавать и человек, не знакомый с программированием, что довольно удобно. Далее запуск специальной команды SSG собирает из этих "кирпичиков" набор обычных страниц html, которые можно разместить на любом хостинге - например, на firebase (в моём случае это было бесплатно).
Изначально стандартом де-факто для SSG был Jekyll, написанный на Ruby - собственно, GitHub Pages до сих пор его использует. Это хороший фреймворк, но не слишком шустрый, если нужно генерировать множество страниц. Поэтому для последнего проекта я решил задействовать Hugo, написанный на Go https://gohugo.io/, и в целом остался доволен. В Hugo используются все те же концепции, что и в Jekyll, но вот генерация страниц (и перезагрузка "на лету") происходит значительно быстрее, что не может не радовать. В общем, если вам потребуется сделать не слишком сложный проект в духе блога, сайта-визитки, информационного ресурса, то очень советую Hugo.
Кстати, насколько мне известно, блог известного сайта Sitepoint, например, теперь тоже полностью переведён на Hugo. Возможно, в будущем сделаю серию видео по этой технологии, так как тема действительно довольно интересная. P.S. Был также опыт работы с Hexo, но он показался сыроватым, во всяком случае год назад. Да и документации на английском маловато, так как изначально это китайская поделка. Если у кого-то был опыт работы с другими SSG - поделитесь, интересно 🙌
gohugo.io
The world's fastest framework for building websites
Hugo is one of the most popular open-source static site generators. With its amazing speed and flexibility, Hugo makes building websites fun again.