Search
Write a publication
Pull to refresh
4
0.2
Bronx @Bronx

User

Send message

AngularJS: Миграция с 1.2 на 1.4, ч.1

Reading time25 min
Views21K
О преимуществах перехода с версии 1.2 написано немало статей. Однако, согласно статистике, более 45% сайтов всё ещё используют версию 1.2, только 31% перешёл на более новую 1.3 и всего 5% используют 1.4.

И это когда космические корабли бороздят просторы вселенной версия 1.2.0 вышла в релиз почти два года назад, версия 1.3.0 − год назад, версия 1.4.0 − ещё этой весной, а 1.5.0 уже выходит в бету.



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

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

Quick Config — программа для быстрой смены заданных настроек

Reading time2 min
Views14K
Став обладателем ноутбука ощутил все прелести мобильности. Работать стало проще, отпала необходимость таскать проекты на флешке, настраивать окружение на домашней и рабочей машине один в один. Появилась возможность брать с собой работу на отдых.

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

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

Так появилась программа Quick Config.
Читать дальше

Custom Action в WiX

Reading time11 min
Views30K
Custom Actions один из важнейших элементов в WiX, позволяющий производить любые действия в процессе установки или удаления программы, раширяющий возможности WiX. С помощью Custom Action мы можем подключить к нашему установщику VBScript, JScript, Dll библиотеку, исполняемый модуль и производить любые действия в процессе работы инсталлятора.

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

Где программе хранить свои настройки?

Reading time2 min
Views33K
Есть программа, которая должна сохранять и загружать некоторые настройки: позицию и размер главного окна программы, идентификатор выбранного языка, время последней проверки обновления. Я задался вопросом — где программа должна хранить свои настройки? Решил собрать информацию на эту тему и поделится ею с вами.

Возможные папки, для хранения настроек и файлов программы:
  • Program Files
  • My Documents
  • User\Application Data
  • User\Local Settings\Application Data
  • All Users\Application data
Читать дальше →

Создание инсталлятора с помощью WiX

Reading time9 min
Views104K
Для начала — что такое WiX? Технология WiX (Windows Installer XML) представляет собой набор инструментов и спецификаций упрощающих процесс создания дистрибутивов на базе MSI (Microsoft Installer). Если объяснять проще то это обертка вокруг MSI с человеческим лицом.

На мой взгляд изучать проще всего на простых примерах. В данной статье я приведу пример простейшего инсталлятора.
Читать дальше →

Перевод отрывков из книги Роберта Хайнлайна «Заберите себе правительство»

Reading time11 min
Views111K

Предисловие переводчика


С сегодняшнего дня начинаю публикацию переведенных мною с английского языка отрывков из произведения Роберта Хайнлайна «Заберите себе правительство» («Take Back Your Government») – руководства для начинающих политиков, написанного Хайнлайном в конце 40-х годов. Часть этого материала уже опубликована мною в ЖЖ, но, думаю, начинать читать хорошую книгу сразу с середины — неправильно, поэтому начинаю публиковать с начала.

На мой взгляд, книга интересна тем, что, во-первых, написана Мэтром фантастики и сохраняет его фирменный лаконичный яркий стиль, а во-вторых — изнутри показывает американскую политическую жизнь того времени, без прикрас и без недомолвок.

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

OneNote 2013, или Как привести дела в порядок

Reading time5 min
Views90K


«Возьми себя в руки, тряпка!» — сказал я себе, когда понял, что работа скоро доконает. Или она тебя, или ты её.

Дорога в тысячу ли начинается с первого шага.
Первым шагом стала книга Дэвида Аллена «Как привести дела в порядок: искусство продуктивности без стресса». Точки над i расставил курс Максима Дорофеева «Джедайская техника пустого инбокса, или Как доводить дела до конца».
 
Нельзя питать иллюзий, ступив на тропу войны. Проблемы не заставили себя долго ждать. Работа на компьютере требовала автоматизации. Дело стало за малым, поиск подходящего программного обеспечения для Getting Things Done (GTD).

Бесконечные пробы GTD-программ не принесли счастья. Комфортной работе мешало большое количество данных.
Не получалось связать задачи и данные внутри одной GTD-программы. Поток писем складировался в Outlook, документы и другие файлы на диске, часть информации на web ресурсах и так далее. Решая дела, приходилось тратить время на поиск связанных с ними данных. Возникали проблемы с синхронизацией информации на разных устройствах и многое другое.
 
Но кто ищет, тот всегда найдёт! Выходом из патовой ситуации оказался Microsoft OneNote 2013, который простыми настройками легко превратился в полноценный GTD-инструмент. Только такой подход позволил преодолеть все проблемы и ощутить комфорт от использования GTD.
Читать дальше →

С чего начать изучение Windows Installer?

Reading time7 min
Views56K
Installer pic Технология Windows Installer (MSI) является стандартом де-факто в мире системных администраторов, занимающихся распространением и поддержкой программного обеспечения для десктопных и серверных версий Windows. Формат MSI поддерживается всеми крупнейшими системами управления конфигурациями (Microsoft SCCM, CA Unicenter и многими другими), а для некоторых систем распространения ПО — является единственным поддерживаемым форматом.
Мой опыт работы с этой технологией — как теоретический, так и практический — приобретен за время работы в компании «Инфопульс Украина» и связан с созданием MSI-пакетов и подготовкой готовых MSI-пакетов к автоматической установке в корпоративной среде.
Читать дальше →

Совместное развертывание System Center 2012 (метод и проблемы)

Reading time4 min
Views33K

Видимо, для сокращения времени внедрения и упрощения тестового развертывания Microsoft System Center 2012 был создан инструмент Unified Installer для унифицированной установки. Вкратце его суть — развертывание всех компонентов системы из одного окна.
Ниже подробно разберем по шагам процесс подготовки и установки, а также расскажем о тех граблях, которые как всегда поджидают нас где-то рядом. В целом инструмент действительно полезен, при должной сноровке можно успеть все сделать за один рабочий день.
Читать дальше →

Тонзиллэктомия ректально: работаем с AD в Powershell без AD cmdlets

Reading time23 min
Views20K
В Windows Server 2008 впервые появились замечательные командлеты PowerShell для работы с ActiveDirectory. Эти прекрасные, логичные, интуитивно понятные и чрезвычайно мощные инструменты вызывали у меня чувство грусти, если не сказать — «досады»: они были недоступны мне, эникейщику непрофильной конторы. Все одиннадцать сетей, которые я обслуживал были построены на базе Windows 2003 R2.

Одиннадцать несвязанных доменов в одиннадцати несвязанных сетях в разных городах, разбросанных по Дальнему востоку. И ни в одной из них — ни то, что «Семёрки», даже «Висты» нет, что ставит крест на попытках использования AD cmdlets в связке с две тысячи третьей.


Задача была сформулирована следующим образом — «создать код, способный выполнять основные операции по управлению AD из сценариев PowerShell, исполняемый в Windows XP / 2003». О том, как она была решена, читайте под хабракатом (осторожно, костыли; много текста и кода).
Из спичек и желудей соберем код для управления AD

Windows 10 по 10. Выпуск #2. Взаимодействие с пользователями через живые плитки и уведомления

Reading time6 min
Views21K


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

Если вы уже являетесь разработчиком Windows-приложений, вы уже, наверняка, знакомы с использованием живых плиток и уведомлений. Если же нет, то растущее количество пользователей Windows 10 – вполне хорошая мотивация, чтобы начать думать об их внедрении в приложении. Ниже описание того, что мы добавили в десятке.
Читать дальше →

Личные устройства при работе с корпоративными данными: BYOD или принеси свой собственный девайс

Reading time8 min
Views24K
Одним из направлений развития современных IT является концепция BYOD (Bring Your Own Device, или дословно «Принеси свое собственное устройство»). Арсенал современного пользователя состоит из нескольких устройств: ноутбука, планшета, телефона; каждый из которых имеет свои особенности и может функционировать на базе разных операционных систем. При этом остается важным вопрос использования личных устройств пользователей для работы с корпоративными данными. Если ноутбуки, да и планшеты на Windows 8 Pro подключить к домену можно без каких-либо проблем, то со всем остальными версиями операционных систем дела обстоят не столь хорошо. Но доступ к корпоративным ресурсам пользователю тем не менее предоставить необходимо. Этим начинаются муки выбора между удобством пользователей и безопасностью внутренней информации. Часто попытки найти решение заходят в тупик. Однако, с выходом Windows Server 2012 R2 и Windows 8.1 появились различные инструменты, которые помогут в решении этой вечной проблемы и в реализации концепции BYOD. Обзор новой функциональности я и хочу представить вам в рамках этой статьи.



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

Пишем maintainable код

Reading time8 min
Views47K
У нас сотни программных проектов на поддержке, некоторые из них поддерживаются нами почти десять лет. Нетрудно догадаться, что понятие maintainable кода (переведу это понятие как код, легкий в поддержке) является у нас одним из основных. По счастливому стечению обстоятельств легкий в поддержке код также является и легким для (unit-)тестирования, легким для освоения новыми членами команды и т.д. Скорее всего, это связано с тем, что для создания maintainable кода приходится озаботиться хорошей архитектурой проекта и завести несколько хороших привычек.
В этой статье и поговорим о таких привычках, благодаря которым часто хорошая архитектура получается сама собой. Постараюсь также иллюстрировать все хорошими примерами.

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

Что такое красивый код, и как его писать?

Reading time22 min
Views209K

1. Вступление


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

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

Но когда дело доходит собственно до кода, все становится гораздо менее однозначно. Да, можно указать на слабые места, можно даже объяснить, что с ними не так. И в следующий раз получить ревью с абсолютно новым набором проблем.

Профессии программиста, как и большинству других профессий, приходится учиться каждый день в течение нескольких лет, а, по большому счету, и всю жизнь. Вначале ты осваиваешь набор базовых знаний в объеме N семестровых курсов, потом долго топчешься по различным граблям, перенимаешь опыт старших товарищей, изучаешь хорошие и плохие примеры (плохие почему-то чаще).

Говоря о базовых знаниях, надо отметить, что умение писать красивый профессиональный код — это то, что по тем или иным причинам, в эти базовые знания категорически не входит. Вместо этого, в соответствующих заведениях, а также в книжках, нам рассказывают про алгоритмы, языки, принципы ООП, паттерны дизайна…

Да, все это необходимо знать. Но при этом, понимание того, как должен выглядеть достойный код, обычно появляется уже при наличии практического (чаще в той или иной степени негативного) опыта за плечами. И при условии, что жизнь “потыкала” тебя не только в сочные образцы плохого кода, но и в примеры всерьез достойные подражания.

В этом-то и заключается вся сложность: твое представление о “достойном” и “красивом” коде полностью основано на личном многолетнем опыте. Попробуй теперь передать это представление в сжатые сроки человеку с совсем другим опытом или даже вовсе без него.

Но если для нас действительно важно качество кода, который пишут люди, работающие вместе с нами, то попробовать все же стоит!
Читать дальше →

Functional C#: работа с ошибками

Reading time6 min
Views30K
В этой части мы рассмотрим как иметь дело со сбоями и ошибками ввода в функциональном стиле.

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

Functional C#: Non-nullable reference types (ненулевые ссылочные типы)

Reading time5 min
Views20K
Третья статья в серии «Функциональный C#».

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

FP на Scala: Что такое функтор?

Reading time15 min
Views33K
Специалист, приступающий к изучению функционального программирования, сталкивается как с неоднозначностью и запутанностью терминологии, так и с постоянными ссылками на «серьезную математику».

В этой статье, не используя теорию категорий с одной стороны и эзотерические языковые механизмы Scala с другой стороны, рассмотрены два важнейших понятия
  • ко-вариантный функтор
  • контра-вариантный функтор
которые являются стартовой точкой для понимания всего множества категориальных конструкций, куда можно включить
  • Exponential (Invariant) Functor, BiFunctor, ProFunctor
  • Applicative Functor, Arrow, Monad / Co-Monad
  • Monad Transformers, Kleisli, Natural Transformations

Объяснено происхождение категориальной терминологии, указана роль языковых механизмов в реализации категориальных абстракций и рассмотрено несколько ковариантных (Option, Try, Future, List, Parser) и контравариантных (Ordering, Equiv) функторов из стандартной библиотеки Scala.

Первая статья в «категориальной серии»:
  1. FP на Scala: что такое функтор?
  2. FP на Scala: Invariant Functor

Если Вы желаете сильнее погрузиться в мир Scala, математики и функционального программирования — попробуйте онлайн-курс «Scala for Java Developers» (видео + тесты, всего за 25% цены!).


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

Functional C#: Primitive obsession (одержимость примитивами)

Reading time6 min
Views29K
Это вторая статья из миницикла статей про функциональный C#.

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

Компенсация погрешностей при операциях с числами с плавающей запятой

Reading time8 min
Views54K
Работа посвящена погрешностям округления, возникающим при вычислениях у чисел с плавающей запятой. Здесь будут кратко рассмотрены следующие темы: «Представление вещественных чисел», «Способы нахождения погрешностей округления у чисел с плавающей запятой» и будет приведен пример компенсации погрешностей округления.

В данной работе примеры приведены на языке програмиирования C.
Читать дальше →

Архитектура форм в Symfony2

Reading time10 min
Views24K
Картинка для привлечения внимания

В Symfony 2 появился совершенно новый компонент для работы с формами, который, насколько я знаю, легко заменит большинство подобных библиотек для PHP и по функционалу, и по возможности в расширении оного (конечно, если не брать в расчет небольшие недостатки при работе с JavaScript). Разработка этого компонента заняла более двух лет, хотя думать над ним я начал еще где-то в 2009-ом году или даже раньше. С каждой новой версией этот компонент становится все более и более стабильным, а полностью стабильная версия ожидается с выходом Symfony 2.2.

Данный пост приурочен к выходу Zend Framework 2 Form RFC, так как мне кажется, что его разработчики, по сути, сделали много того, что уже было сделано нами. Конечно же всем ясно, что Zend Framework 2 должен обладать прослойкой для работы с формами, который полностью учитывает особенности компонентов, поставляемых с фреймворком. Целью данного поста является попытка показать, что Symfony2 Forms прекрасно подходит под эти требования. Функционал, присущий Symfony2, может быть легко убран: код для обработки форм и все уровни абстракций полностью независимы. Привязать же поддержку особенностей компонентов Zend-а так же не составит труда.

Создание обобщенной библиотеки для работы с формами, которая покрывает все возможные сценарии использования, возникающие при разработке, было непростым испытанием, долгим и сложным делом, которое, к тому же, еще не завершено. Сотрудничество и дальнейшее совместное развитие должно помочь добиться более гибкого и простого управления формами из PHP.
Читать дальше →

Information

Rating
4,250-th
Registered
Activity