понедельник, 19 сентября 2011 г.

Утечка памяти в BlockingCollection

В .NET 4.0 появился класс BlockingCollection. С его помошью, к примеру, очень элегантно реализуется паттерн Producer-consumer.

Однако, как оказывается, в нем есть утечка памяти....

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

С помощью данного класса я в многопоточном режиме парсил csv файлы объемом в несколько гигабайт, с последующей записью в БД. Два дня убил на дебаг... После реализации workaround'a, у меня получилось загрузить файл объемом в 1GB, но на 13GB, я снова поймал Out of memory:(

понедельник, 12 сентября 2011 г.

OFF: О футболе

Рейтинг ФИФА:

40 Burkina Faso 646 -1 Down -15
41 Belarus 645 1 Up 9
42 Czech Republic 635 -4 Down -35
43 Jamaica 623 1 Up -9
44 Venezuela 615 -4 Down -33
45 Hungary 613 2 Up 10
46 Algeria 612 6 Up 37
47 South Africa 602 2 Up 5
48 Ukraine 598 -3 Down -22
49 Senegal 591 -3 Down -28
50 Honduras 589 1 Up -3

Дожились... Нас обошла Белоруссия и Буркина-Фасо, а в спину дышит Гондурас. ЕВРО будет нашим:)

понедельник, 4 июля 2011 г.

Книга Inside Microsoft® SQL Server® 2008: T-SQL Querying

Закончил читать книгу inside microsoft sql server 2008: t sql querying. Процесс тюнинга очень хорошо и подробно расписан. Много качественных примеров.
Нужно будет еще как-нибудь прочитать книгу этих же авторов Inside Microsoft® SQL Server® 2008: T-SQL Programming

четверг, 30 июня 2011 г.

DBFExporter

Задача: Сохранить файл с данными в формате dbf.

Есть разные способы решения данной задачи. Очень часто люди используют пакет MS Office. Excel или Access умеют работать с данным форматом.
Это несколько суровый способ:
1) требует наличия онных на машине у пользователя.
2) COM - со всем вытекающим гемором.

В принципе, в коорпоративной среде пункт 1 не проблема. Пункт 2, если по десять раз в день пользователям не переустанавливают офис - в целом, можно смириться с тупыми глюками, которые похоже и не собираются фиксить, а также необходимостью вызывать методы с 20-ю параметрами, половина из которых ни на что не влияет, и оставлена Майкрософтом для обратной совместимости.

Так как мы в своем приложении используем Excel для определенных целей, идея использовать Excel для экспорта в dbf показалась мне заманчивой, тем более, что он поддерживает все версии формата.

Какого же было мое разочарование, когда выяснилось, что по причинам судовой тягомотины Майкрософт удалила возможность сохранять файлы dbf в MS Excel 2007. Читать он умеет, а вот сохранять фиг. Учитывая, что у доброй половины пользователей именно Excel 2007 - делать под 2003, а потом доказывать, что он должен обязательно быть у пользователя, как то не хочеться.

И тут на помощь приходит гугл. Утилит и библиотек, которые бы могли конвертировать csv в dbf не меряно, но большинство из них стоит примерно по 20$.

Единственное бесплатное и вроде бы работающее решение было найдено на соурсфордже

Экспорт осуществляется в dbf 3. По умолчанию файл сохраняется в кодировке ASCII. Имея исходники, нужно поменять код в двух местах, чтобы экспортировать в любой кодировке.

P.S. Если сгенерированный мной сегодня файл, завтра не получиться загрузить в банковскую АБС - будет не хорошо. Верим в лучшее

вторник, 31 мая 2011 г.

Впечатления от чтения спецификации языка C#

Тоска жуткая. Как в справочник заглядывать можно, как книгу читать очень тяжело. Куда приятнее читать MSDN.

понедельник, 7 марта 2011 г.

OFF: Отпуск в Праге

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

Приехал в аеропорт Борисполь. Было ощущение, что это какой-то автовокзал регионального масштаба - куча народу стоит прямо во входе на терминал B с сумками. Прошел регистрацию, сдал багаж, побродил по дьюти фри. На выходе из терминала, ожидал автобус, который довез до самолета, так и хотел выкрикнуть: "Пасажиры, передаем за проезд". Далее трап, небольшая толкучка, -13 градусов. В общем не приятно.

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

Далее трансфер в отель. 3-х звездночный ABE, на Легерова 22. Минут 5 пешком от метро И.П. Павлова. Там в округе куча отелей. В целом небольшой отельчик, наверное от 3-х звезд ожидать большего не стоит. Типа евро ремонт, вроде не очень грязно, вода горячая есть, тапочек и холодильника нету (в Украине в "нормальных" - с евро ремонтом отелях мне всегда попадались тапочки). Шведский стол на завтрак с неочень большим выбором блюд (колбаса, сыр, мясная нарезка, орехи, хлопья, чай, кофе, молоко). Ресторанчик при отеле начинал работать в 8 утра. Что не очень удобно, если тебе к примеру в 7:00 уже нужно ехать смотреть другой город. Для тахих случаев заранее нужно просить сухпаек, который с утра можно забрать на ресепшене. В сухпаек входило пару бутербродов, кусочек плавленого сыра, помидор и сок. В общем желательно перед таким днем затарится в ближайшем магазине.

Практически весь персонал (с которым приходилось общаться на ресепшене) знает русский. Была девушка лет 25-30 (судя по всему носитель), тетка лет 45-50 (заметно что не носитель, но говорит не плохо), мужик лет 40 (говорит с трудом, но понимает нормально), и парень лет 20-25 (сказал что по-русски не говорит и мы общались на английском).
Вообще как у меня сложилось впечатление, то люди работающие в местах скопления туристов практически все владеют русским. Если не владеют русским, то вполне сносно владеют английским.
Если поприставать к прохожим на улице (а Вы не подскажете как пройти в библиотеку?), то в местах где туристов не видно (специально заезжал, чтобы посмотреть на обыденую жизнь города), то молодежь говорит по-английски (я уж совсем быдловатых не спрашивал, хотя особо таких и не видел). Спрашивал двоих человек лет 50-60, они не по-русски не по-английски не говорили. После чего я решил, что лучше прямо влоб без "Sorry, do you speak English?" подходить к молодеже, и мне ни разу не попадались такие, которые бы не разговаривали на сносном по моим меркам английском.

Ну а так, что поразило, что люди работающие с туристами, сразу определяют людей из бывшего СССР.
Я зашел в бар, ни слова не успел сказать ни по-русски, ни по-английски, как мне принесли меню на русском. На улице, где куча туристов со всего мира подошел араб, и по-русски предложил поменять у него деньги. Не я один такой. Много народу удивляется как они это делают. Вроде ведем себя нормально, а пожалуй и лучше буржуйских туристов (так как более зашуганные). Одеты точно в такой же въетнамо-корейский шарпотреп как и другие. Как мне объяснили, у нас более угрюмые выражения лиц. Да понаблюдал, так оно и есть. Наши даже если и улыбаются, то как-то более сдержано, как будто совком (Союз нерушимый республик свободных) по роже получили.
Естественно если уйти с туристических троп, то мы от чехов вообще не отличаемся (братья славяне). Со мной несколько раз на улице несколько раз пытались заговорить по чешски.

Чешский язык это нечто :) Я почему то думал, что смогу понимать говорящих между собой чехов, так как понимал польский, когда смотрел польский канал (почти все понимаешь, но через полчаса начинает с непривычки ехать крыша). Оказалось не так просто. Некоторые слова улавливаешь, но они могут означать вовсе не то, что ты думаешь. Например слово "Pozor", перевонится не как "позор", а как "внимание". Если говорить медлено, и они говорят медлено, то впринципе зная русский, украинский и используя язык жестов можно объясниться на уровне совершения покупки в магазине:). Некоторые ихние слова для нас могут быть интуитивно понятными, например "возидла" - машина, "летадла" - самолет :) "дікую" - спасибо, почти как украинское "дякую".

Если сравнивать цены, то цены на продукты питания в магазинах примерно соответсвуют нашим украинским. Одежда, наверное тоже, по крайней мере я заходил в некий Sportisimo, который и по ценам, и по асортимену мало чем отличается от Спортмастера.
Цены в ресторанах, примерно такие же как в Киеве. Стейк обходится примерно в 150-200 крон (делим на два получаем гривны), бокал пива (я пил только местное чешское) 30-50 крон, если не заводское, а из собственной пивоварни, то немного дороже. Порции большие:) Я например, заказал свинное колено весом 1800 грамм (большая часть пожалуй кость, но и мяса тоже много) и осилил его с огромным трудом. Пиво, в целом, как пиво. Бутылочное чешское в Чехии ни чем не отличается от бутылочного чешского в Украине. Стоит пробовать пиво в маленьких пивоварнях, например в Страговском монастыре или в пивоварне в Дитинице. Даже не по тому, что оно какое-то особенное по вкусовым качествам, а потому, что варится в ограниченных количествах, может хранится лишь несколько дней, и его больше нигде не попробуешь. Козел и Старопрамен, который делают в Чехии, по вкусу мало чем отличается от тех, которые делают у нас. В общем пиво - это дело вкуса. Моим любимым пивом как было, так и осталось темное Крушовице. Еще нормальное Крушовице Мушкетер (у нас не встречал). Не понравился Златопрамен и Пилснер Уркуел, реклама которого на каждом шагу.

В среднем на хорошо покушать выходило 10-15 евро с человека. До этого ездил в Прагу коллега, и расказывал о 30-и евро. Мне аж интересно, это что такого можно съесть за такие деньги? Найти бюджетный вариант типа Пузатой Хаты у меня не вышло (правде не особо искал). Есть куча Макдональдстов, но это для гурманов :) Проезд дороговат. Билетик на полчаса или 5-станций метро - 18 крон. На 75-минут - 26 крон. На день - 100 крон. Годовой проездной на год что-то в районе 4600 крон.

Качество общественного транспотра на порядок выше чем в Киеве, на половине станций в метро есть лифты для инвалидов. И люди на инвалидных калясках ездят в метро. Нету этих долбанных маршруток (я не видел). Покупаешь билетик, компосируй и едь на метро, пересаживайся на трамвайчик, автобус. Никаких: "Пасажиры, передаем за проезд. Одной рукой курит, другой считает деньги, ногой рулит и подрезает другого такого же. Так, я бл#дь не понял кто не передал ...". Турникеты чисто символические. Просто стоят аппараты, в которые вставляешь билет и тебе на нем отпечатывается время и станция на которой ты сел. Если билет уже пробит, и еще действует спокойно проходи не останавливаясь и не прикрывая ничего в страхе рукой, чтобы не прищимило. Контролеров не видел. Местные расказывали, что они есть, и штрафы очень не хилые. Дороги не идеальные, но гораздо лучше чем у нас. Ездил в метро в часпик. Такой давки как в Киеве вроде нету. Может повезло, а может пражская инфраструктура больше соответсвует реальному количеству жителей. Официально в Праге живет 1 200 000 человек. Понаехавших, вроде меня ведь тоже хватает (?) + толпы туристов в центре (это был еще не сезон).

В первый день было полдня свободного времени.
Поменял деньги. С одной стороны пожалел, что в Украине купил евро, а затем менял на кроны. Во многих обмениках в центре принимают гривны. Единтсвенное что нужно быть внимательным, так как в обменике могут взять комиссию. Нужно менять у арабов, или там где написано комиссия 0%.

Решил побродить по городу (исторический центр - старый город, новый город). Куча коротких узеньких улочек. Не имея карты очень легко заблудится.
Хотя стоит отдать должное чехам, везде куча указателей на разных языках.
На центральных улицах куча туристов (итальянцы такие шумные). В целом не идеально, но гораздо чище чем в Киеве. Засранее улицы, чем Крещатик в Киеве, я в жизни не видел. Архитектура красивая, в целом похоже на исторический центр Львова, но только побольше. Каждый дом выглядит как-то по особому, куча статуй. Потом ходили уже с экскурсоводом - у каждого домика своя легенда. В целом довольно интересно получается.

Второй день была поездка в Вену. Выездные экскурсии на день - отстой. Час-два едешь. Три часа тебя водят по историческому центру города, потом есть два-три часа свободного времени. Которого хватает на то, чтобы покущать, сходить в какой-нибудь музей и зайти в пару магазинов. В отличии от Чехии, в Австрии и Германии по-русски не особо говорят (и слава богу). Чтобы заказать покушать или что-то купить английский знать желательно. Можно, конечно, как многие наши мычать и тыкать пальцами, но это довольно тяжело как по мне. В Вене красивый императорский дворец, куча статуй мужика на коне (император Вацлав). По сравнению с Прагой - лучше дороги и куча велосипедных дорожек для велосипедистов. На велосипедах ездят девушки в юбках. Так и представил гламурных фиф, типа Маши Ефросининой (а хто це?), на таком вот велосипеде, с корзинкой для продуктов:) Ничего против данной дамы не имею (мне вообще по барабану на украинский шоубизнес), просто привел как собирательный образ для примера.

Конечно, за такое короткое время сложно нормально что-то посмотреть. Понравился чумной столб и австрийское пиво. Познакомился с двумя девушками из подмосковья. Для всех экскурсий собирают людей из разных отелей, прибывших в разное время и изъявивших желание пойти именно на эту экскурсию. Так что как таковой группы нету, многих людей можно больше никогда и не увидеть. Я их (девушек) видел после этого только раз.

Ездил в Карловы Вары. Городок небольшой. Если не ехать с целью лечиться, то как мне - там особо занятся нечем. Ходят на раслабоне в основном пожилые люди, пьют водичку (не вкусная, слишком минерализирована, как будто в воду соды насыпали, похожа на Боржоми, только поядренее). Чистый воздух, уточки и благодать. Количество русскоговорящих просто зашкаливает. Город разделен на две части, в одной части курортная зона, в другой живет обслуживающий персонал. Кроме сферы обслуживания есть завод по производству стекла, и завод по производству бехеровки. В общем мне не особо понравилось.

Ездили в замок в Детинице. Замком это можно назвать с трудом. Небольшой двухэтажный домик в стиле барокко (или рококо, простите за невежество). Походили по домику, пофоткали интерьер. Затем пошли ужинать в ресторан. Оригинальная задумка. Закос под средневековье. Освещается только свечами, на полу сено. Принесли полную тарелку мяса. Развлекательная программа. Песни, танцующая девушка на столе, постановка сценки, выстрелы из мушкетов, мужик со змеей, которую можно погладить, огненное шоу. Местное пиво, впринципе, нормальное.

Много бродил по Праге сам. Куча музеев. К примеру, возле Карлового моста есть музей Франца Кафки. Говорят, что очень хороший. Жалею, что не попал. В полностью свободный день съездил в зоопарк и кукольный театр на Дон Жуана (понравилось, рекомендую, хотя дороже чем в Киеве - я заплатил 450 крон). Если сравнивать, к примеру с Киевом, то как мне показалось - все немного удобнее, чище и человечние. К примеру, у входа в парк есть специальные пакетики для собачек. Собачка покакала, хозяин собирает это дело специальным совком, ложит в пакетик, и выкидывает в урну. Полиция (а ее там довольно много), наверное также продажная, местные расказывают, что с ними впринципе за 200 крон можно договориться. После 10 вечера, между станциями метро Музеум и Мустек буквально через каждые 20-30 метров стоит по негру (простите, по афрочеху). Незнаю, наверное, они проводят экскурсии по ночной Праге :) и делятся за это с полицией, раз я турист на них обратил внимание, а полицейские на экскурсию сходить не хотят (или уже были?)

Ничего такого сверхестетвенного в Чехии я не увидел. Уровень жизни, как я понимаю, там не очень высокий. Естественно выше чем в Украине:( Пенсия 500 евро против 100 - это все же разница. Если двигаться в нужном направлении, догнать чехов было бы более чем реально. Но только не в том направлении движемся.

Гуляя с группой по Страгоместкому монастырю, наблюдали картину, как к монастырю подъехали три черные ауди. Из одной вышел президент чешской республики, они с делигацией пошли возлагать венок (умер какой-то чешский писатель). Я стоял от президента Чехии метрах в 20 (есть его фотка). Кто может подобное представить в Украине? У нас бы омон оцепил все в радиусе километра, президент прилетел на вертолете, а меня если бы я попытался приблизится, с крыши бы пристрелил снайпер. На обратной дороге, мы опять встретили мышину с президентом (уже одну). За рулем водитель, на заднем сиденье президент, и аж один охраник. Никаких тебе кортежей, мигалок, перекрываний дороги, машин скорой помощи, которые на скорости за 100 км в час по городу создают ДТП. Ведь если сократить чрезмерные затраты на охрану нашего уважаемого президента и служебные авто для депутатов, можно ведь закупить пакетики для собачьих какашек? Причем большинство людей ведь у нас абсолютно нормальные, и если показать как это делается и поставить побольше урн, многие люди ведь будут убирать за своими питомцами.

В предпоследний день поехал в Нюрнберг. В городе сохранилась городская стена (довольно толстая), которая окружает всю историческую часть города. Куча средневековых башен. В общем с точки зрения туриста, очень круто. Далее я получил настоящий шок. Это известно, что в Германии очень высокий уровень жизни, но пока я этого не видел, я не представлял как это, когда пенсия в стране порядка 2000-3000 евро. В центре города ресторанчики, все желающие не помещаются в середине. На улицу выставлены столы, просто в огромных количествах. Льется море пива, официанты носят горы еды. Сидят немцы различных возрастов. Те что помоложе, одеты кто во что. Многие из тех, кто постарше в пальто и шляпах. Сложно представить, чтобы украинский пенсионер пошел попить пивка в центр города, да? На центральных улицах дорогие модные магазины (Gucci, Marc&Spencer и т.д.). В них, как в продуктовый магазин заходит куча старушек. Стоит припаркованный Порше Кайен, в него садится дедушка. В Украине, конечно, тоже есть дедушки на порше, но их еще нужно поискать. А там это все в таких количествах, что психически неподготовленому человеку вроде меня бросается в глаза. Еще бросается в глаза куча арабов или турков, но это другая история :)
Обедали мы в большом баре, не помню названия.Он немного отдален от центра, и цены там пониже. За порцию из 6 Нюрнберских сосисок с гарниром из капусты 6 евро (вполне сносно). Неплохое свое пиво. Кругом куча болельщиков футбольного клуба Нюрнберг. Не знаю, выиграл ли Нюрнберг, проиграл, или они просто собрались попить пива, но поющие песни немцы это очень калоритно:) Все спокойно и мирно. Никаких беспорядков и кучи этих гребанных семечек, как на наших стадионах. Было бы время, обязательно бы сходил в Германии на футбол.

В целом скажу, что поездкой остался доволен. Конечно, у них тоже не все идеально. На улицах чище чем у нас, но чистота не идеальная, в общественном туалете может быть сломано сиденье и плохо пахнуть, но в целом лучше чем у нас.
Если есть кто-то такой же темный как я - нужно обязательно съездить в Европу. По деньгам у меня вышло за неделю 300 евро самолет + 300 евро проживание в отеле + дополнительные экскурсии (в среднем 50 евро) и питание в ресторанах (в среднем 10-15 евро с человека за раз) + сувениры 400 евро. Итого на все про все около 1000 евро. Могу сказать, что для первого раза в качестве просвящения оно того стоит. Хотелось бы еще побольше посмотреть Германию, чехи нас может и не на много опережают в плане экономики, но ощущение в целом, что у них гораздо больше людей пытаются быть людьми. По крайней мере, власти стараются, чтобы люди себя людьми чувствовали, а не быдлом как у нас. Ведь реально, не так много нужно сделать, чтобы хотя бы попытаться сделать улицы чище, чтобы запретить маршрутчикам ездить без кондукторов, чтобы повесить в центре города указатели, на разных языках, чтобы турист мог сам без гида найти Михайловскую площадь, к примеру.

P.S. Вернулся в Украину. Не хочу выходить на улицу, чтобы не видеть все то быдло с семечками и пивом Десант.

среда, 9 февраля 2011 г.

Resign Patterns Ailments of Unsuitable Project-Disoriented Software

Закончил читать Gang Of Four - Design Patterns, Elements Of Reusable Object Oriented Software.
Жаль, что по жизни чаще приходится сталкиваться с чем-то вроде этого. Поржал с себя на тему Absolver. Вообще интересная штука, если в наследство к тебе переходит хороший код, то подсознательно своим ты его признаешь очень быстро, даже если твоего кода там минимум. Если же плохой, отвергаешь его даже тогда, когда твоего кода там станосится не меньше, чем начального.

PS. Самое печальное, что проклиная своего предшественника - осознаешь, что твоему последователю, будет за что проклинать тебя:(

вторник, 18 января 2011 г.

Сдача MS 70-431

Сегодя сдал майкрософтовский экзамен "Microsoft SQL Server 2005--Implementation and Maintenance".
Конечно, было бы актуальнее сдавать 2008 сервер, но у меня нету практического опыта его применения, так что я попросту побоялся.

Готовился 2.5 месяца, используя преимущественно трейнинг кит и MSDN. В конце, решил попробовать дампы, коих полно в сети. По правде говоря, очень много вопросов на экзамене было как в дампах.
Не понимаю людей, которые выкладывают подобную информацию в сеть. Чем легче сдать экзамен, тем меньше он ценится (или это недоброжелатели MS делают? :)). Какой смысл снижать собственный вес, при этом позволяя другим "на шару" сдать экзамен? Я не считаю, что сдал "на шару", ведь готовился нормально, а мог бы просто зазубрить вопросы из дампов. Хотя это, как и использование любой "шпаргалки" - риск. Ведь нельзя быть уверенным, что вопросы из дампов совпадут на 100% с вопросами на экзамене.

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

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

Из-за того, что это первый базовый экзамен, в нем охвачена довольно большая часть функционала SQL Server. Пришлось подтягивать вопросы, которые мне как разработчику, в реальной жизни решать не приходится. К примеру, заниматься бекапами - не есть задача разработчика, точно также как разработчику вовсе не обязательно знать, что SQL Server 2005 Standard Edition не будет работать на Windows XP Professional с SP1.

Понравился сам по себе трейнинг кит, как книга. Узнал для себя кое-что новое. Некоторые вопросы описаны довольно таки нормально. К примеру, не во всех книгах по MS SQL Server для разработчиков, нормально описана причина фрагментации индексов, и когда индекс лучше REORGANIZE, а когда REBUILD.

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

PS. Так вопрос, исключительно на проверку собственной памяти. Вспомню ли я через полгода, чем отличаются RAID0, RAID1 и RAID5?