Рубрика «Программирование» - 798

Содержание

Некоторые люди, столкнувшись с проблемой, думают: «О, а использую-ка я регулярные выражения». Теперь у них есть две проблемы.
Джейми Завински

Юан-Ма сказал: «Требуется большая сила, чтобы резать дерево поперёк структуры древесины. Требуется много кода, чтобы программировать поперёк структуры проблемы.
Мастер Юан-Ма, «Книга программирования»

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

В этой главе мы обсудим такой инструмент – регулярные выражения. Это способ описывать шаблоны в строковых данных. Они создают небольшой отдельный язык, который входит в JavaScript и во множество других языков и инструментов.

Регулярки одновременно очень странные и крайне полезные. Их синтаксис загадочен, а программный интерфейс в JavaScript для них неуклюж. Но это мощный инструмент для исследования и обработки строк. Разобравшись с ними, вы станете более эффективным программистом.
Читать полностью »

Приходилось ли вам или вашим знакомым/друзьям полностью менять свою профессию? Как вы/они это делали?
А в каких условиях и за какое время? С каким бекграундом по новой желаемой профессии вы пришли на первое собеседование?

Примем следующие условия:

  1. Тяжелая финансовая ситуация (семье нужны деньги)
  2. Кризис в стране. На текущей работе резкое уменьшение зарплаты. Кризис. Финансов меньше, проектов меньше, премий тоже меньше.
  3. У других работодателей похожая ситуация.
  4. Необходимо как можно скорее сменить профессию.
  5. Бекграунд по новой профессии есть, но он не очень велик/глубок.

Если конкретнее, то нужно было сменить профессию на веб-программиста.
Не спорю, что порог входа в такую профессию не очень велик. Но а если цели еще вот такие:

  1. Устроиться в нормальную, стабильную фирму, а не в ту, «куда возьмут».
  2. Чтобы были отличные перспективы, мощный и умный коллектив.
  3. Чтобы была возможность очень быстро расти и развиваться.

Можно создать очень привлекательное резюме. Ваш опыт будет показан умно/хитро. Чтобы работодатель подумал, что вы ему подходите. Можно иметь хорошо подвешенный язык, и на собеседовании приплетать лишнего/привирать/преувеличивать. Можно решать тесты собеседования не совсем корректно и пытаться доказать, что это решение тоже имеет место быть.

А может, просто быть искренним? Поделюсь своим опытом.
Читать полностью »

Для ленивых и не желающих возиться, сдувать пыль с бубна по настройке exim4/postfix/sendmail предлагается простейший сборщик почты написанный на Python[1].

Его работа заключается в сборе всей почты, посылаемой этому фейковому smtp серверу и складывании её в указанную папку /tmp/mails в виде файлов писем nobody@mail.local.1 с порядковым номером.

Читать полностью »

Если у вас есть некий процесс, который может выполняться долго и возвращать несколько промежуточных результатов с течением времени, то Реактивные Расширения (.NET Framework Reactive Extensions) позволят вам упростить код и лучше управлять им.
чистый код с реактивными расширениями

В большинстве случаев вы просто вызываете метод и получаете результат на выходе. Но некоторые процессы устроены по-другому. Например, метод может выполняться в течение продолжительного промежутка времени. Или, что хуже, метод не только выполняется долго, а ещё и нерегулярно возвращает какие-то промежуточные результаты во время исполнения. Конечно, в том числе и для этого, в .NET Framework есть события, с помощью событий один объект может вызвать метод второго объекта, передавая некоторую информацию, в тот момент времени, когда это необходимо.

Но есть решение этой проблемы по-лучше, чем использования событий, — Реактивные Расширения. Если у вас есть процесс, работающий долго и время от времени возвращающий промежуточные результаты, то Реактивные Расширения помогут вам обрабатывать такие результаты всякий раз, когда они приходят. Код от использования Реактивных Расширений вместо событий не только становится проще, но вы ещё получаете более богатую функциональность (например, вы можете использовать LINQ для отсеивания любых ненужных данных).Читать полностью »

image
Пример редактора уровня в игре.

Если вы когда либо играли в игры типа Guitar Hero, Osu или Bit Trip Runner вы знаете, как сильно погружает в «поток» простая зависимость геймплея от музыки играющей на фоне. Удивительно, что таких игр, на самом деле не так уж и много. Кроме того, такая синхронизация может быть полезна для создания спецэффектов, но тем не менее почти нигде не встречается, кроме обозначенных выше игр типа rhythm. Вот и я решил воспользоваться таким бесхитростным приемом в собственной игре, а также поделиться наработками.

Я постарался описать конструкцию, удобную как для программирования большого количества игровых событий, так и работающую как можно более оптимальным образом. Применить которую можно почти в любой игре, возможно и вам она пригодится, если вы занимаетесь их разработкой.Читать полностью »

СД: НЧ

Без плагинов Brackets не лучше других редакторов, но с ними его стоит хотя бы попробовать.

Введение

Не так давно на Хабре было опубликовано множество статей, касающихся тем или иным образом редактора Brackets. У многих людей сразу же появились вполне справедливые вопросы:

  1. Чем он лучше используемого мной %EDITOR_NAME%?
  2. Много ли под него плагинов?
  3. Стоит ли связываться или лучше использовать какую-нибудь известную IDE или текстовый редактор?

Надеюсь, после чтения этой статьи каждый сможет найти для себя ответы на эти вопросы.
Читать полностью »

Содержание

Отладка изначально вдвое сложнее написания кода. Поэтому, если вы пишете код настолько заумный, насколько можете, то по определению вы не способны отлаживать его.
Брайан Керниган и П.Ж.Плауэр, «Основы программного стиля»

Юан-Ма написал небольшую программу, использующую много глобальных переменных и ужасных хаков. Ученик, читая программу, спросил его: «Вы предупреждали нас о подобных техниках, но при этом я нахожу их в вашей же программе. Как это возможно?» Мастер ответил: «Не нужно бежать за поливальным шлангом, если дом не горит».

Мастер Юан-Ма, «Книга программирования».

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

Недостатки в программах обычно называют ошибками. Это могут быть ошибки программиста или проблемы в системах, с которыми программа взаимодействует. Некоторые ошибки очевидны, другие – трудноуловимы, и могут скрываться в системах годами.

Часто проблема возникает в тех ситуациях, возникновение которых программист изначально не предвидел. Иногда этих ситуаций нельзя избежать. Когда пользователя просят ввести его возраст, а он вводит «апельсин», это ставит программу в непростую ситуацию. Эти ситуации необходимо предвидеть и как-то обрабатывать.
Читать полностью »

Добрый день. В этой статье расскажем о том, как устроена печать в нашей платформе.

Немного истории

Для понимания, полезно будет рассказать о истории возникновения этой функции. Изначально решение что называется было «в лоб». Использовался виндовый спулер и печать осуществлялась через стандартные процедуры. Собственно, такое решение продержалось недолго, ровно до того момента, как потребовалось реализовать печать с сервера приложений, а не из клиентского приложения.
На всякий случай приведу схему из первой статьи:

Мегатонны макулатуры легким движением руки
Читать полностью »

Последние два года я решаю все задачи исключительно на Cython. Это вовсе не значит, что я пишу на Питоне, а потом «Ситонизирую» это с использованием различных деклараций типов, нет, я просто пишу на Cython. Я использую «сырые» структуры и массивы C (а иногда и векторы C++) и маленькую обёртку вокруг malloc/free, которую я написал сам. Код работает практически так же быстро, как C/C++, потому что это и есть код на C/C++, украшенный синтаксическим сахаром. Это код на C/C++ с функционалом Python именно там, где мне это нужно и где я этого хочу.

Читать полностью »

Только автоматизация. Только PowerShell.

Jump Start в PowerShell (часть I)

Предисловие

В качестве хобби и при наличии времени преподаю студентам в УКИТ (бывший Московский государственный колледж информационных технологий). На данный момент у меня мало времени, чтобы уделить его группе студентов, зато вполне достаточно, чтобы подготовить пост здесь, на Хабре.

Я работаю системным администратором в крупной не ИТ-компании с большой завязкой на ИТ ресурсы. По роду деятельности представляется решать большое количество однотипных задач по обслуживанию пользователей.

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

Внимание: PowerShell вызывает привыкание.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js