Search
Write a publication
Pull to refresh
1
Олег Сорока @oleg40aread⁠-⁠only

User

Send message

Эти занимательные региональные настройки

Reading time8 min
Views30K
Сегодня мы поговорим о региональных настройках. Но сперва — небольшая задачка: что выведет нижеприведённый код? (Код приведён на языке C#, но рассматривается достаточно общая проблематика, так что вы можете представить на его месте какой-нибудь другой язык.)

Console.WriteLine((-42).ToString() == "-42");
Console.WriteLine(double.NaN.ToString() == "NaN");
Console.WriteLine(int.Parse("-42") == -42);
Console.WriteLine(1.1.ToString().Contains("?") == false);
Console.WriteLine(new DateTime(2014, 1, 1).ToString().Contains("2014"));
Console.WriteLine("i".ToUpper() == "I" || "I".ToLower() == "i");

Сколько значений true у вас получилось? Если больше 0, то вам не мешает узнать больше про региональные настройки, т. к. правильный ответ: «зависит». К сожалению, многие программисты вообще не задумываются о том, что настройки эти в различных окружениях могут отличаться. А выставлять для всего кода InvariantCulture этим программистом лениво, в результате чего их прекрасные приложения ведут себя очень странно, попадая к пользователям из других стран.Ошибки бывают самые разные, но чаще всего связаны они с форматированием и парсингом строк — достаточно частыми задачами для многих программистов. В статье приведена краткая подборка некоторых важных моментов, на которые влияют региональные настройки.

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

Хватит заниматься Freemium – пора зарабатывать

Reading time6 min
Views59K
Вопрос о целесообразности использования Freemium актуален для самых разных продуктов и решений. Быть или не быть? Свои мысли на этот счет излагает Линкольн Мэрфи. Рассуждения подкреплены данными о компаниях, которые очень известны.

Позвольте мне объясниться… Я не ненавижу Freemium.

Вообще, нет такой маркетинговой стратегии, модели получения прибыли или привлечения клиентов, которую бы я ненавидел. В том числе и Freemium. Просто мне кажется, что при выборе бизнес-модели иногда следует более серьезно задуматься о том, что имеет смысл использовать, а от чего надо отказаться..
Читать дальше →

Strace

Reading time7 min
Views128K
В течение минуты думал над заголовком, так ничего и не придумал…
Strace. Наверное нет того человека, который бы не слышал про strace. Если кто не слышал, то strace — это утилита, отслеживающая системные вызовы, которые представляют собой механизм трансляции, обеспечивающий интерфейс между процессом и операционной системой (ядром). Эти вызовы могут быть перехвачены и прочитаны. Это позволяет лучше понять, что процесс пытается сделать в заданное время. Перехватывая эти вызовы, мы можем добиться лучшего понимания поведения процессов, особенно если что-то идет не так. Функциональность операционной системы, позволяющая отслеживать системные вызовы, называется ptrace. Strace вызывает ptrace и читает данные о поведении процесса, возвращая отчет. Детали можно прочитать в вики или официальном man. Собственно вот, ну и речь конечно же о Linux. В других ОС свои аналоги.
Так вот, лично для меня strace это как последняя инстанция. Когда уже все логи просмотрены, все debug и verbose ключи включены, а причина проблем так и не обнаружена, я достаю из широких штанин запускаю strace. Есть одно но, strace это такой инструмент который вовсе не является серебряной пулей, которая тут же все покажет и расскажет. Для работы с strace требуется наличие определенных знаний и чем шире и глубже эти знания тем больше вероятность обнаружения проблемы.
В интернетах полно вводных статей, где описываются примеры запуска strace. Я же в этой статье покажу частные проблемы и их решение с помощью strace.
Читать дальше →

Что лучше для стартапа: Вьетнам или Таиланд?

Reading time4 min
Views53K
Всем привет! Нас зовут Антон и Светлана, и мы вместе работаем над проектом «Я люблю ИП». Почти год назад мы впервые уехали на зимовку в Юго-Восточную Азию и прожили 6 месяцев в Таиланде и 4,5 месяца во Вьетнаме. Нас часто спрашивают, какая из этих стран лучше? В посте мы постараемся объективно рассказать о своём опыте, а выводы вы сделаете сами.


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

Профайлер для Entity Framework

Reading time22 min
Views25K


Приветствую!

Продолжу серию статей про программирование. На этот раз, я хочу рассказать о написанном мной бесплатном профайлере для Entity Framework-а ( далее EF) c 4-й по 6-ю версию, а также о некоторых примененных мной решениях, таких как декомпилирование .NET кода на лету, форма для обработки исключений и прочее.
Nuget пакет для EF6: https://www.nuget.org/packages/EFlogger-For6/
Nuget пакет для EF4 — 5: https://www.nuget.org/packages/EFlogger-For4/

Подробности под катом.
Читать дальше →

Стартап, вестинг, клифф: доли в бизнесе и права участников

Reading time6 min
Views78K
Один из самых привлекательных моментов в присоединении к стартапу — получение опционов (прав на приобретение определенной доли в стартапе по фиксированной цене). Это предоставляет право владения долей компании и помогает сбалансировать интересы руководства и сотрудников. Впрочем, один аспект в обыкновенном пакете опционов вызывает горячие дискуссии между сотрудниками и руководителями, и этот аспект — годовой порог (cliff). Мы в Alconost перевели для вас статью, в которой понятно и практично написано о клифф-вестинге, опционах и рисках, связанных со всем этим.


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

ZeroMQ: сокеты по-новому

Reading time7 min
Views81K
В любом среднем или крупном приложении, будь оно desktop или web, для бизнеса или для личного пользования, программисту необходимо решить важную архитектурную задачу — как будут общаться между собой потоки, процессы, модули, ноды, кластера, и прочие части эко-системы его приложения.

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

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

ZeroMQ предлагает разработчику некий высокий уровень абстракции при работе с «сокетами». Библиотека берет на себя часть забот по буферизации данных, обслуживанию очередей, установлению и восстановлению соединений, и прочие вещи. Вместо того, чтобы заниматься такими глупостями, вы можете сосредоточиться на главном — архитектуре и логике приложения.

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

Лучшие плагины для Sublime Text

Reading time5 min
Views645K

WebInspector


Мощный инструмент для дебаггинга JavaScript, полноценный инспектор кода для Sublime. Фичи: установка брейкпоинтов прямо в редакторе, показ интерактивной консоли с кликабельными объектами, остановка с показом стек трейса и управление шагами дебаггера. Все это работает на ура! А еще есть Fireplay от Mozilla, который позволяет подключаться к Firefox Developer tools и максимально простой дебаггер JSHint.



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

Сам себе AWS. Часть 1

Reading time5 min
Views20K
И снова здравствуйте!

image
Нет, это не Fez

В прошлый раз я вкратце рассказал, что есть на рынке open-source для создания карманного облака.
Теперь же настало время рассказать вам про сам OpenStack и его реализацию в виде Mirantis OpenStack 5.1.
Читать дальше →

TOX: Что произошло в проекте за полгода

Reading time4 min
Views63K


Многие наверно уже слышали о Tox — это мессенджер, который должен заменить Skype, предоставив такой же функционал, как и его проприетарный аналог, подарив такие полезные вещи, как: Шифрования всего и вся, отсутствие слежки, отсутствие рекламы, децентрализация.

Может показаться, что проект умер развивается слишком медленно, но на самом деле, у него под капотом (в ядре) произошли огромные изменения которые стоит осветить.
Читать дальше →

Osquery выставляет ОС как реляционную СУБД

Reading time1 min
Views16K
Facebook выложил на гитхабе фреймворк OSquery, он осуществляет низкоуровневый мониторинг процессов в OS X и Linux и хранит их в виде SQL-таблиц. Такой способ по-своему удобен, ведь в запросе можно объединять разные таблицы.

Например, если мы хотим посмотреть названия, pid и порты всех процессов, которые прослушивают порты во всех интерфейсах, то составляем запросик

SELECT DISTINCT 
  process.name, 
  listening.port, 
  process.pid
FROM processes AS process
JOIN listening_ports AS listening
ON process.pid = listening.pid
WHERE listening.address = '0.0.0.0';
Читать дальше →

Как разворачивать веб-сайты в Microsoft Azure?

Reading time5 min
Views29K
Неделя Хэллоуина – популяция статей про веб-сайты в облаке Microsoft Azure удваивается.

Как многие знают, на Microsoft Azure есть очень простой сервис для размещения веб-сайтов на .NET, Java, PHP, Python, Node.js. Эту статью можно использовать в качестве шпаргалки для того, чтобы постоянно иметь под рукой перечень опций развертывания и ссылок на инструкции.
В шпаргалке: Visual Studio, Git, Mercurial, TFS, WebMatrix, MSBuild и WebDeploy.



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

10 лучших инструментов для разработки и администрирования MySQL

Reading time6 min
Views745K
Многие компании создают различные многофункциональные приложения для облегчения управления, разработки и администрирования баз данных.

Большинство реляционных баз данных, за исключением MS Access, состоят из двух отдельных компонентов: «back-end», где хранятся данные и «front-end» — пользовательский интерфейс для взаимодействия с данными. Этот тип конструкции достаточно умный, так как он распараллеливает двухуровневую модель программирования, которая отделяет слой данных от пользовательского интерфейса и позволяет сконцентрировать рынок ПО непосредственно на улучшении своих продуктов. Эта модель открывает двери для третьих сторон, которые создают свои приложения для взаимодействия с различными базами данных.

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

MySQL репликация one-slave-multi-master

Reading time3 min
Views14K

Предисловие.


Понадобилось сделать репликацию несколькими мастер-серверами с mysql, чтобы данные со всех них грузились на один слэйв-сервер. Готового решения стандартными средствами не нашлось. Но так как проблема оставалась актуальной, со временем подоспел немного усложненный, но работоспособный вариант c использованием средств самой mysql.
Читать дальше →

Отказоустойчивая система на базе репликации mySQL и сетевого протокола CARP

Reading time4 min
Views17K
И так задача.
Есть 2 сервера: 1 — Master, 2 — Slave. Нужно сконфигурировать отказоустойчивую систему, которая позволит в случае падения 1го сервера и/или базы данных, автоматически переключиться на 2й при минимальном downtime. После восстановлении Мастера, он должен стать слейвом, а Слейв — Мастером. ОС FreeBSD.
Читать дальше →

How To настроки репликации в MySQL с использованием шифрования SSL на Debian Lenny

Reading time7 min
Views14K
Это руководство описывает, как настроить репликацию базы данных в MySQL с использованием SSL соединение для шифрования.
MySQL репликация синхронизирует базу данных, что позволяет иметь точную копию БД на другом сервере. Все обновления БД на главном сервере автоматически реплицируются на другой сервер, что позволяет защитить базу от аппаратных сбоев. В этой статье будет показано, как реализовать репликации БД exampledb с сервера server1.example.com(ip адресом 192.168.0.100) на сервер server2.example.com(ip адресом 192.168.0.101) с использованием SSL соединения
Читать дальше →

Высокодоступное отказоустойчивое web-приложение на Apache2 и MySQL

Reading time7 min
Views18K

HA-Apache2 Web-Site and HA-MySQL


Цель: обеспечить высокую доступность web-приложения и минимальное время простоя при отказе одного как web-сервера, так и сервера баз данных.
Замечание! Схема предполагает, что web-приложение и база данных находится на разных серверах.
Для примера будем устанавливать wordpress.

Вариант решения:
Поскольку web-приложение должно быть постоянно доступно, то необходимо минимум два сервера с установленным приложением. Серверы будут отслеживать состояние друг друга, при этом в каждый момент времени ведущим будет только один из них. В случае отказа ведущего сервера его роль принимает второй. Когда первый сервер будет вновь доступен, к нему опять вернется роль ведущего.
Читать дальше →

Основы репликации в MySQL

Reading time10 min
Views333K
С репликацией серверов MySQL я познакомился относительно недавно, и по мере проведения разных опытов с настройкой, записывал, что у меня получалось. Когда материала набралось достаточно много, появилась идея написать эту статью. Я постарался собрать советы и решения по некоторым самым основным вопросам, с которыми я столкнулся. По ходу дела я буду давать ссылки на документацию и другие источники. Не могу претендовать на полноту описания, но надеюсь, что статья будет полезной.
Читать дальше →

Горизонтальное масштабирование PostgreSQL с помощью PL/Proxy.

Reading time9 min
Views28K
Очень тяжело начать писать статью. Т.е очень тяжело придумать вступительное слово. Хочется рассказать обо всём и сразу :) Но нет. Будем последовательны.
Начну с того что совсем недавно проходил Highload++ 2008 на котором мне удалось побывать.
Скажу сразу — мероприятие было проведено по высшему клаcсу, докладов было много и все были очень интересными.
Одной из самых запомнившихся презентаций была лекция Аско Ойя об инфраструктуре серверов баз данных в Skype. Лекция в большей степени касалась различных средств с помощью которых достигается такая производительность серверов.
По словам Аско, база данных Skype выдержит даже если все жители Земли захотят подключится к скайп в один момент.

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

UPD: Как правильно заметил хабраюзер descentspb в статье присутствует досаднейшая ошибка. В следствие своей невнимательности я подумал что PgBouncer надо устанавливать между прокси и клиентом. Но, как оказалось, та проблема которую я решал с помощью PgBouncer не решится если установить его именно так. Правильнее надо устанавливать боунсер между нодами и прокси. Мало того, именно так и рекомендуется делать в оффициальном мануале на сайте PL/Proxy.
В любом случае использование PgBouncer так как указано на моей схеме также даст прирост производительности. (Разгрузит Proxy).


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

Как джависты сделали .NET-конференцию

Reading time6 min
Views22K
В .NET-мире есть беда с пониманием рантайма. Ведущие разработчики крупных .NET-компаний, безусловно, понимают общие принципы работы GC, JIT-компилятора, аллокатора и других компонент. Но даже они признают, что не знают деталей. Книги Рихтера помогают узнать какие-то базовые вещи, но не более того. Отсутствие внятных технических докладов о CLR (и зарубежных и русскоязычных) от инженеров Microsoft порождает ненужное брожение в умах девелоперов. Закрытость информации порождает нежелание лезть вглубь. Всё равно фиг узнаешь, что там майкрософтовцы понаписали.

Осознав эту проблему, в апреле этого года мы вместе с компанией JetBrains провели конференцию .NEXT 2014 Piter, посвященную техническим аспектам программирования на .NET. Послушав некоторые доклады и вволю наобщавшись с людьми в кулуарах, я и сделал вывод, о котором написал выше. Под катом я расскажу о деталях прошедшей конфы и о том, на какие мысли они меня навели.


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

Information

Rating
Does not participate
Location
Москва и Московская обл., Россия
Date of birth
Registered
Activity

Specialization

Chief information officer (CIO)
Lead