Обновить

Еще один опыт работы эникейщиком/системным администратором в бюджетной организации

По мотивам вот этой истории я решил написать свою.

Пролог

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

Опыт дизайна платформера



Небольшая статья о том, как я пробовал себя в геймдизайне и делал концепт для платформера.

Немного обо мне меня. Мне 27 лет, 7 лет занимаюсь программированием, где-то год назад мне посчастливилось начать работать в игровой студии. Программистом. Это позволило мне познакомиться с Unity и узнать, что можно делать игры самому.

Дальше я как-то набрел на «Книгу Линз» (GameDesign Book of lenses), прочитал и начал думать о том, что пора. Пора писать игру!

В этой статье я хочу рассказать о том, как менялось мое представление о геймдизайне по мере получения информации из книг и набивании шишек при работе над концептом своей игры и о том, как он — концепт — мутировал со временем.
Читать дальше →

Миграция учетных записей почты DirectAdmin на iRedMail (postfix+mysql) с сохранением паролей

В заголовке я слукавил — переносятся не пароли, а их хеши, но результат все равно интересен, как по мне.

Имеем VPS с DirectAdmin'ом, в котором есть некоторое количество пользователей. Возникла мысль о переносе почты на полноценную систему (почти — jail во freebsd) и получение в результате плюшек в виде прямого доступа к логам, удобного roundcube для web доступа к почте и iRedAdmin'ом для управления всем этим хозяйством, потому как не все админы дружны с *nix.

В процессе установки iRedMail узнал о особенности jail — нет localhost. Вообще. Переделка служб с 127.0.0.1 на внешний и единственный ip спасла ситуацию.

Далее решил, что миграция учетных записей должна проходить максимально прозрачно — со стороны пользователя не должно быть дополнительных движений как-то смена пароля в почтовой программе. Порадовал скрипт в составе iRedMail'a — create_mail_user_SQL.sh, но одна беда — по умолчанию он предлагает задать пользователям либо всем одинаковый пароль, либо пароль каждому совпадает с его же логином. Но это же не наш метод! (с)
Читать дальше →

Конфигурирование software raid1 на «живой» системе в автоматическом режиме

Статья по скрипту на python, который настраивает software raid1 на «живой» ОС Linux.

Введение


По роду деятельности, админ в хостинговой компании, довольно часто приходится «сетапать» новые выделенные сервера. Принята политика, где в базовую настройку входит конфигурирование software raid1 и raid10 для 2-х и 4-х дисковых конфигураций.
С целью автоматизации и экономии времени был написан скрипт на python github.
Читать дальше →

«Хорошего кода должно быть много» или «почему меня грызёт совесть на работе»


Доброго времени суток, господа!
Свой первый пост на хабре пишу в некотором недоумении после очередного рабочего дня. Работаю в одной малоизвестной IT-конторе, занимаюсь написанием хранимых процедур и функций, формирующих бизнес-логику компании. Опыт работы у меня всего 1 год, поэтому в процессе разработки возникает много вопросов и огромное желание переписать часть уже готового кода так, как я считаю правильным, а не как он есть сейчас.

Приведу конкретный пример. Есть пакет примерно следующей структуры:

create or replace package pkg_import is

function import_table1(param in number, err out number) return number ;

function import_table2(param in number, err out number) return number ;

/*и так далее, около 30 штук*/
end pkg_import;

create or replace package body pkg_import is

function import_table1(param in number, err out number)
return number is
begin
  err :=0;
  if param = 1 then
  /*удаление данных из таблице table1*/
  end if;
  
  if param = 2 then
  /*удаление данных из таблицы table1 для ключевого поля, равного значению param*/
  end if;
  
  /*ещё какие-то проверки*/
 return 0;
exception
  when others then
      err:=sqlcode;
      return -1;
end import_table1;

/*и другие функции по тому же принципу*/

end pkg_import;
/


Таблицы table1, table2… table 30 отличаются названиями и количеством полей. С таким количеством однообразных функций в пакете я смирился (не представляю, как можно сделать по-другому с сохранением требуемой производительности и читабельности кода), но в самих функциях смотреть на эти бесчисленные if-ы (которых по 6-7) штук мне просто неприятно. Ввиду сложности проверок по значению param (на предприятии более сложная логика, чем описана выше, но суть та же) приходится в каждой функции писать по 5-6 UPDATE-ов на одну и ту же таблицу.

Меня раздражает, что куски кода много где дублируются. Меня раздражает, что при создании новых функций в этом пакете приходится вставлять ещё столько же почти повторяющегося кода, но руководство постоянно делает замечания, когда я пытаюсь написать по-другому (например, переписать несколько update-ов через один с помощью case). И я не уверен, стоит ли мне отстаивать своё право писать хороший код в своих пакетах и процедурах, понятный мне и простой для меня, если с этими объектами кроме меня через пару лет будут работать совсем другие люди, которым, возможно, 10 UPDATE-ов проще, чем один, но более сложный.

Подскажите, господа, неопытному программисту. Стоит ли мне убивать время, пытаясь привести код к какой-то другой более короткой и изящной форме или же это — нормальная практика в программировании: дублировать однообразные куски кода вплоть до нескольких тысяч строк, если это один из самых простых подходов к решению проблемы, а руководству большего от меня и не требуется? Я хочу делать свою работу лучше и качественнее, но в данной ситуации я попросту не знаю, что верно.

Таинственный вход с IP-адреса Mail.Ru

Доброго времени суток хабровчане!

Этот пост нисколько не претендует на инвайт и не несет в себе что-то очень полезное сообществу, однако рассказать общественности о произошедшем случае считаю необходимым. К тому же есть шанс получить ответ здесь от представителей компании Mail.Ru, а не от тех.поддержки, которая молчит больше недели.
Читать дальше →

Парсер логов Quake 3 для самых маленьких

image

Давным-давно, во времена, когда я не знал практически ничего о программировании, мне пришла в голову мысль о том, как было бы здорово иметь статистику в одной из моих любимых игр — Quake. Прошло время, появились более-менее адекватные знания языков программирования. И я вспомнил о своём намерении.
В этой статье я хочу показать, по-моему мнению, самый простой способ реализации такой задачи на языке C++.
Читать дальше →

Проблемы использования DependencyInjection в Symfony2 и их решение

Если взглянуть на использование DependencyInjection компонента в Symfony2
$newsletterManager = $container->get('newsletter_manager');

то можно увидеть большую проблему — непонятно, объектом какого класса является переменная $newsletterManager. Конечно, можно поместить doc-комментарий — но это дополнительная работа, которую можно тупо забыть сделать.

Можно быстро поменять сервис из настроек, но нельзя нормально, без лишних танцев с бубном, отследить использование класса сервиса в проекте. А если нет контроля над использованием объектов класса, значит будут баги, особенно при рефакторинге.

Приведу простой пример, который показывает как использовать зависимость между сервисами.

Читать дальше →

Настройка локального окружения Drupal на Mac OS X, настройка MAMP и drush

В этой статье я кратко расскажу об установке локального окружения для разработки под Drupal.

MAMP

MAMP — это локальный веб сервер, работающий на операционной системе mac os x. Mac + MySql + Apache + PHP == MAMP.
Итак, приступим. Думаю, что проблем с установкой MAMP не должно возникнуть. Скачиваем и устанавливаем MAMP Pro.
Во вкладке Server->PHP выбираем PHP 5.3.20
Теперь, для того, чтобы работать было комфортно, нам нужно выставить лимиты памяти:
Читать дальше →

Как по-простому перестать говнокодить

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

Всё это сложно, неочевидно и чревато долгими спорами.

Я дам несколько простых советов, следовать которым так же просто, как мыть руки перед едой.
Читать дальше →

Правильные коментарии

Бывало ли у вас так, что вы видите море негативных отзывов совершенно не содержащих смысла?
После выхода моего нового приложения в Google play я стал видеть множество негативных комментариев, но не понимал их причины т.к. они состояли в основном из нецензурной брани и тогда у меня родилась Идея!
Читать дальше →

Постановление Правительства РФ № 743 или очередной удар по свободному Интернету

image

31 июля председатель правительства РФ Д. Медведев подписал постановление № 743 «Об утверждении Правил взаимодействия организаторов распространения информации в информационно-телекоммуникационной сети „Интернет“ с уполномоченными государственными органами, осуществляющими оперативно-разыскную деятельность или обеспечение безопасности Российской Федерации», во исполнение статьи 10.1 ФЗ «Об информации, информационных технологиях и о защите информации».

Данное постановление регулирует отношения «организаторов распространения информации» с органами, осуществляющими следственные и розыскные мероприятия, а так же со службами, обеспечивающими безопасность РФ.

Полный текст можно посмотреть здесь.

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

Знакомство с Arudino или как я заставил мигать лампочку и оповещать меня об этом

Добрый день Харбовчане, сегодня приобрел такой девайс, как Arduino.

Заранее примерно изучив язык Arduino UNO, я тут же ринулся в бой! Т.к кроме Arduino UNO у меня больше ничего не было, я решил сделать простенький проект с миганем лампочки с пометкой «L» и оповещении о ее включении и выключении в мониторинге COM порта.
Читать дальше →

Отсутствие битовых операций в jpa

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

placeTo — кроссбаузерный placeholder для вашего сайта



Предыстория


Недавно верстал сайт, сверстал хорошо, в принципе, но клиент оказался придирчив. Ему нужно было, чтобы для полей ввода показывались подсказки определенного цвета. В современных браузерах подсказки создаются благодаря атрибуту placeholder. Но как было мне поступить со старыми браузерами. В техническом задании, который приложил мне заказчик, был пункт — поддержка IE7+. Вот тут я искал готовые решения, но из всех ничего подходящего для себя не нашел. В итоге я написал скрипт за 20 минут, который реализовывал мою задачу, но, чтобы не создавать такой велосипед, созданный мною, я подумал, а не оформить ли в отдельный проект все это, вдруг кому будет интересно.
Читать дальше →

Про закон о «Wi–Fi по паспорту». Не все так страшно, как кажется, по крайней мере, пока

Вот про этот закон. Давайте прочтем текст закона. Там написано, что изменения вносятся в «Постановление Правительства РФ от 21 апреля 2005 г. № 241 „О мерах по организации оказания универсальных услуг связи». Однако, что это за «универсальные услуги связи»? А вот что:

В Российской Федерации принцип универсального обслуживания впервые был закреплен в 2003 году в Федеральном законе «О связи». В соответствии с Федеральным законом «О связи» (PDF, 228.81 Kb, RTF, 564.17 Kb, HTML Размещен: 17.11.2009 18:56, Изменен: 15.12.2009 14:55) в Российской Федерации гарантируется оказание услуг телефонной связи с использованием таксофонов и услуг по передаче данных и представлению доступа к сети Интернет с использованием пунктов коллективного доступа (ПКД).

Читать дальше →

Принтер для печати наклеек TSC TTP-245C, CUPS и Arch Linux

Статья родилась после обращения в российскую тех. поддержку TSC. Ман с вики для внутреннего пользования, если будут вопросы или неточности — пишите.

Принтер


Серия TSC™ TTP-245C – это настольные принтеры этикеток компактных размеров с высокой производительностью.
Мы используем модель TTP-245C c модулем гильотина aka отрезчик.
Читать дальше →

Утечка учётных данных через SNMP в МФУ от Kyocera



Был недавно неприятно удивлён.
Писал скрипт для формирования отчёта по количеству отпечатанного материала опрашивая счётчики принтеров и МФУ через SNMP. Обнаружил, что в параметрах 1.3.6.1.4.1.1347.42.23.2.4.1.1.5.2.x Kyocer-овских МФУ-шек явным образом лежат логины к виндовым шарам, а в 1.3.6.1.4.1.1347.42.23.2.4.1.1.6.1.х к ним пароли в самом что на есть открытом виде.
Читать дальше →

С чего начинается программирование?

И это не название темы, которая будет этот вопрос раскрывать. На самом деле с чего программирование начинается, а главное с чего начинать программировать?

Проштудировав Хабр, я так точно и не нашёл ответ на вопрос «А что делать-то, если ты не то что не знаешь языки программирования, а не понимаешь таких терминов как „переменные“, „условия“ и „циклы“ и когда ты читаешь на русском языке даже комментарии здесь, на Хабре, я еще не говорю о темах, ты видишь вот это — 去的屁股,我們沒告訴你,他不會尋求?»

Есть темы, которые совсем немного раскрывают этот вопрос, так как в основном все ответы даны в комментариях, а не в самих темах(хотя здесь, насколько я знаю, это частое явление):
Читать дальше →

Прикручиваем сканер МФУ Epson к Centos 6

Тема стара как мир, но как птица феникс восстала из пепла, а точнее из необходимости прикрутить сканер МФУ Epson к Centos 6 (gnome).
Имеем цветной струйный МФУ Epson SX115. Ключевой момент, побудивший написать статью — скудность информации по поддержке относительно свежих устройств сканирования. Поиски в сети увенчались найденными крупицами информации, которые вскользь упоминали что это можно сделать. Как это быстро сделать и избежать подводных камней — прошу под кат.
хочу знать как это сделать!