В общем, как мне кажется, подобные мысли могут появляться из-за неуверенности или нежелания изучить что-то новое. Но факт заключается, в том, что учиться на протяжении жизни - это весьма важно, дабы сохранять остроту и трезвость ума. Более того, уметь учиться - это тоже отдельный навык, которым, к сожалению, не все обладают. Но это уже другая история...
Поговорим ещё немного о программировании и стереотипных высказываниях, которые мне приходилось слышать в разное время.
* Мне уже целых 18 (30, 55) лет! Слишком поздно начинать. Данное утверждение, связанное со слишком большим (по мнению говорящего) возрастом, вызывает наибольшее удивление. В мире, конечно, есть ряд профессий, которые налагают довольно жёсткие возрастные ограничения. Например, стать космонавтом или профессиональным футболистом вряд ли получится в 40-50 лет. К программированию, однако, это совершенно не относится. Приведу простой пример: периодически у меня берёт уроки мужчина средних лет из Канады (назовём его, к примеру, Майк). Так вот пару лет назад Майк не знал о разработке вообще ничего. Он всю жизнь работал - и до сих пор работает - в совершенно другой отрасли. Однако в один прекрасный день его заинтересовало именно программирование. Майк начал изучать материалы в Интернете, работать над собственными проектами, а затем обратился ко мне, чтобы прояснять некоторые вопросы. И вот спустя некоторое время мы вместе с Майком создали довольно сложное web-приложение, которое теперь он использует для собственных целей и планирует привлекать сторонних пользователей. Времена, когда нужно было получить профессию и всю жизнь работать на одном месте, к счастью, давно ушли. Более того, как я упомянул ранее, уметь учиться - это очень важный навык в наши дни.
* У меня нет технического образования. Я не знаю высшую математику (математическую статистику и комбинаторику, методы оптимизации, богословские трактаты XV века - ненужное вычеркнуть), поэтому у меня ничего не выйдет, даже и пытаться не стоит. Для изучения программирования не требуется никакое профильное образование. Лишним оно, конечно, не будет, но и обязательным не является. Различные технические дисциплины нужны в тех случаях, когда вы планируете писать специализированные программы, однако новички с них никогда не начинают. В дальнейшем, если вы почувствуете такую необходимость, можно всегда "подтянуть" и математику, и любой другой нужный предмет. Благо, онлайн-курсов в наше время достаточно, в том числе от ведущих университетов мира. Было бы только желание.
* Я попробовал программировать и понял, что не смогу стать в этом деле лучшим, поэтому и не стал продолжать. (это стереотип из коллекции моего товарища). Здесь вызывает вопрос слово "лучший". Кто является лучшим? Человек, который знает самое большое количество языков программирования? Или который победил на всех возможных соревнованиях по спортивному программированию? Специалист, способный создать систему любой сложности в кратчайшее время? Дело в том, что однозначного ответа на этот вопрос нет, потому данное утверждение представляется некорректным в принципе. Как уже упоминалось выше, стать хорошим специалистом вам почти наверняка под силу. Даже освоить один язык программирования на среднем уровне - это хорошее достижение. Награду за усилия вы получите, когда создадите своё первое приложение, пусть и несложное, которое окажется полезным для других людей или даже для одного-единственного человека. Поверьте, это необычное и очень приятное ощущение. В конце концов, вы получаете этот новый навык не для того, чтобы стать самым крутым программистом в мире. Скорее, вам интересно этим заниматься.
* Мне уже целых 18 (30, 55) лет! Слишком поздно начинать. Данное утверждение, связанное со слишком большим (по мнению говорящего) возрастом, вызывает наибольшее удивление. В мире, конечно, есть ряд профессий, которые налагают довольно жёсткие возрастные ограничения. Например, стать космонавтом или профессиональным футболистом вряд ли получится в 40-50 лет. К программированию, однако, это совершенно не относится. Приведу простой пример: периодически у меня берёт уроки мужчина средних лет из Канады (назовём его, к примеру, Майк). Так вот пару лет назад Майк не знал о разработке вообще ничего. Он всю жизнь работал - и до сих пор работает - в совершенно другой отрасли. Однако в один прекрасный день его заинтересовало именно программирование. Майк начал изучать материалы в Интернете, работать над собственными проектами, а затем обратился ко мне, чтобы прояснять некоторые вопросы. И вот спустя некоторое время мы вместе с Майком создали довольно сложное web-приложение, которое теперь он использует для собственных целей и планирует привлекать сторонних пользователей. Времена, когда нужно было получить профессию и всю жизнь работать на одном месте, к счастью, давно ушли. Более того, как я упомянул ранее, уметь учиться - это очень важный навык в наши дни.
* У меня нет технического образования. Я не знаю высшую математику (математическую статистику и комбинаторику, методы оптимизации, богословские трактаты XV века - ненужное вычеркнуть), поэтому у меня ничего не выйдет, даже и пытаться не стоит. Для изучения программирования не требуется никакое профильное образование. Лишним оно, конечно, не будет, но и обязательным не является. Различные технические дисциплины нужны в тех случаях, когда вы планируете писать специализированные программы, однако новички с них никогда не начинают. В дальнейшем, если вы почувствуете такую необходимость, можно всегда "подтянуть" и математику, и любой другой нужный предмет. Благо, онлайн-курсов в наше время достаточно, в том числе от ведущих университетов мира. Было бы только желание.
* Я попробовал программировать и понял, что не смогу стать в этом деле лучшим, поэтому и не стал продолжать. (это стереотип из коллекции моего товарища). Здесь вызывает вопрос слово "лучший". Кто является лучшим? Человек, который знает самое большое количество языков программирования? Или который победил на всех возможных соревнованиях по спортивному программированию? Специалист, способный создать систему любой сложности в кратчайшее время? Дело в том, что однозначного ответа на этот вопрос нет, потому данное утверждение представляется некорректным в принципе. Как уже упоминалось выше, стать хорошим специалистом вам почти наверняка под силу. Даже освоить один язык программирования на среднем уровне - это хорошее достижение. Награду за усилия вы получите, когда создадите своё первое приложение, пусть и несложное, которое окажется полезным для других людей или даже для одного-единственного человека. Поверьте, это необычное и очень приятное ощущение. В конце концов, вы получаете этот новый навык не для того, чтобы стать самым крутым программистом в мире. Скорее, вам интересно этим заниматься.
* Утверждение, приведённое выше, можно понимать и как "я пробовал(а) и у меня не получилось". В этом случае необходимо понять причину неудачи. Не хватило мотивации? Свободного времени? А, может быть, не подошли используемые учебные материалы? Если вопрос в мотивации, то, скажем честно, в большинстве случаев справиться с этим можно только самостоятельно (хотя помощь специалиста тоже может оказаться не лишней). Какие бы слова я не писал, как не расписывал бы прелести работы программистом - это мало поможет, если у вас нет желания этому учиться. Однако, коль скоро вы читаете эти строки, что-то побудило вас сделать ещё одну попытку и, я надеюсь, возобновить обучение. Значит, пытайтесь не растерять этот запал, не опускайте руки после первой неудачи! Уверяю вас, даже опытные разработчики зачастую сталкиваются с задачами, над которыми бьются целыми днями и даже неделями. Главное - выделяйте хотя бы немного времени на разработку, так как ключевым моментом является непрерывность обучения.
В заключение я хочу сказать следующее: не бойтесь пробовать, не бойтесь изучать новое и не бойтесь ошибаться. Как бы банально это ни звучало, но не ошибается тот, кто ничего и не делает. Беритесь за разные задачи, пробуйте их решать, не стесняйтесь публиковать свои проекты и участвовать в работе над проектами с исходным кодом. Пройдёт несколько недель, месяц, полгода, и вы вдруг почувствуете, как вырос ваш навык, а прежние страхи куда-то исчезли.
В заключение я хочу сказать следующее: не бойтесь пробовать, не бойтесь изучать новое и не бойтесь ошибаться. Как бы банально это ни звучало, но не ошибается тот, кто ничего и не делает. Беритесь за разные задачи, пробуйте их решать, не стесняйтесь публиковать свои проекты и участвовать в работе над проектами с исходным кодом. Пройдёт несколько недель, месяц, полгода, и вы вдруг почувствуете, как вырос ваш навык, а прежние страхи куда-то исчезли.
👍1
Всем привет! В новом видео мы подробно обсудим, что происходит при вызове несуществующего метода в Ruby и как этот процесс контролировать самостоятельно. Мы узнаем, что переопределение метода method_missing позволяет достигать очень интересных результатов и писать весьма элегантные программы.
Самостоятельно можно посмотреть, как реализована библиотека Hashie, а также усовершенствовать наш класс SuperHash. Например, сделайте так, чтобы образцы этого класса отвечали на метод с вопросительным знаком в конце. Такие методы должны сообщать, имеет ли данный объект указанный ключ или нет. Например:
s_hash.name = "John"
s_hash.name? # true, такой ключ есть
s_hash.surname? # false, такого ключа нет
https://youtu.be/A4rDR8hDVX8
Самостоятельно можно посмотреть, как реализована библиотека Hashie, а также усовершенствовать наш класс SuperHash. Например, сделайте так, чтобы образцы этого класса отвечали на метод с вопросительным знаком в конце. Такие методы должны сообщать, имеет ли данный объект указанный ключ или нет. Например:
s_hash.name = "John"
s_hash.name? # true, такой ключ есть
s_hash.surname? # false, такого ключа нет
https://youtu.be/A4rDR8hDVX8
YouTube
Секреты классов Ruby | method_missing и методы, которых нет
В этом видео мы подробно обсудим, что происходит при вызове несуществующего метода в Ruby и как этот процесс контролировать самостоятельно. Мы узнаем, что переопределение метода method_missing позволяет достигать очень интересных результатов и писать весьма…
А вы знали, что для вашей организации в GitHub можно легко получить значок Verified? Для этого достаточно сделать следующее:
* В настройках организации добавить свой сайт или почтовый адрес на домене, которым вы можете управлять. Увы, почта на доменах типа gmail.com или yandex.ru не подойдёт, так как (вероятнее всего) управлять этими зонами вы не можете
* Далее в настройках организации открываете Verified domains и следуете инструкциям. В частности, в доменной зоне вам потребуется создать запись TXT с правильным значением.
* Нужно подождать некоторое время, пока изменения DNS применятся (тут как повезёт - от получаса до двух дней), после чего можно будет вернуться в Verified domains и завершить процесс верификации
* В настройках организации добавить свой сайт или почтовый адрес на домене, которым вы можете управлять. Увы, почта на доменах типа gmail.com или yandex.ru не подойдёт, так как (вероятнее всего) управлять этими зонами вы не можете
* Далее в настройках организации открываете Verified domains и следуете инструкциям. В частности, в доменной зоне вам потребуется создать запись TXT с правильным значением.
* Нужно подождать некоторое время, пока изменения DNS применятся (тут как повезёт - от получаса до двух дней), после чего можно будет вернуться в Verified domains и завершить процесс верификации
Всем привет! Сегодня очередное видео о регулярных выражениях, в котором мы узнаем, как контролировать поведение regexp с помощью таких флагов, как i, x, g, m, s (любой регистр, расширенный режим, глобальный режим, многострочный режим, точка может соответствовать переносу строки). Мы поговорим, как эти флаги работают и какие у них есть отличия в разных языках программирования. Кроме того, мы узнаем, как работают якоря для привязки к началу и концу строки и чем они отличаются от якорей для привязки к началу и концу линии. https://youtu.be/Sj7V94PNlMY
YouTube
Регулярные выражения #2 | Флаги и якоря
В этом видео мы узнаем, как контролировать поведение регулярных выражений с помощью таких флагов, как i, x, g, m, s (любой регистр, расширенный режим, глобальный режим, многострочный режим, точка может соответствовать переносу строки). Мы поговорим, как эти…
Всем привет! :) Сегодня мы поработаем с наследованием в Ruby, затронем методы класса (singleton methods), а также узнаем, как определять методы динамически, то есть прямо в момент исполнения программы, причём с заранее неизвестными именами. Для этого мы задействуем define_method и, благодаря такому подходу, напишем компактную программу без дублирования кода. https://youtu.be/-6E6NFJ_R7Y
YouTube
Секреты классов Ruby | Динамические методы
Сегодня мы поработаем с наследованием в Ruby, затронем методы класса (singleton methods), а также узнаем, как определять методы динамически, то есть прямо в момент исполнения программы, причём с заранее неизвестными именами. Для этого мы задействуем define_method…
Кстати, на всякий случай вот прямая ссылка на наш чат https://news.1rj.ru/str/joinchat/MxYT6-01eeA1NTYy который привязан к данному каналу. Туда можно писать и вопросы, и какие-то новости, и подсказки и прочее - да что угодно по теме IT. Все комментарии к постам тоже отправляются туда. В этом плане Telegram немного неудобный, но имеем, что имеем 🙌
Telegram
DEV: Рубиновые тона: ЧАТ
Обсуждение канала "DEV: Рубиновые тона"
Всем привет! Сегодня хотел поделиться ссылкой вот на такой проект, написанный энтузиастами: https://dry-rb.org/ Суть в том, что они создали набор библиотек для Ruby, которые позволяют выполнять разнообразные операции с данными: прописывать валидацию, собственные типы, структуры данных (типа Struct). Есть даже своё решение для управления схемой, то есть по факту набор этих библиотек может быть использован вместо ActiveRecord. Говорят некоторым нравится - может быть, кто-нибудь уже пробовал задействовать dry?
Нашёл вот такую интересную инфографику, которая суммирует необходимые знания про продвинутого джуниора, работающего с фронт-эндом. Как мне кажется, вполне адекватная подборка, может кому пригодится https://frontend-science.com/Junior_RoadMap.pdf
Что ж, перед грядущими выходными предлагаю новое видео о регулярных выражениях. 🤟 Мы поговорим о том, как в регулярных выражениях найти любой символ, являющийся частью слова (\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