You are viewing masterden

masterden says [entries|archive|friends|userinfo]
masterden

[ website | программирование ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

XML<=>XLS на С# для частного бюро оценки. [Jun. 26th, 2014|11:13 pm]
[Tags|]
[music |Within Temptation - Bittersweet | Powered by Last.fm]

Оригинал взят у droids_life в XML<=>XLS на С# для частного бюро оценки.

Выкатил тут, кстати, родителям второй релиз конвертилки. Писал про неё уже пару раз (например, http://masterden.livejournal.com/60181.html). Не покидает ощущение, что её можно было сильно быстрее и проще сделать на VBA прямо внутри эксельки. Но проект был домашний и от него хотелось ещё и веселья. В итоге, поддержал себя в форме и не протухаю в плане .NET. Прилада, надеюсь, скоро будет колбасить не только родительские файлы, но и левые заказы.

В коде я порезвился на славу, конечно. Тезисно:

* UI сдела на WPF. К сожалению, делал его на скорую руку и в плане кода он не очень правильный: не использовал Commands, нет горячих клавиш, MVVM нормальным там и не пахнет. Зато поддержал drag'n'drop =) Последний раз его делал ещё в СофтЛабе для редактора квестов.

* Код парсинга входа и выхлоп - тяжеловесный LINQ. По сути, императивного кода там 5%. Остальное - это LINQ to Objects выражения, "готовящие" модель данных и LINQ to XML выражения, описывающие "выхлоп". На первый взгляд, кажутся перебором. Однако получился интересный опыт. Вторую версию (или итерацию) я писал после полугодового перерыва (даже по vcs проверил :) и после отрытия кода тяжелее всего было вникать не в эти конструкции, а в логику GUI и всякий glue-код. А сами выражения мозг загружал в себя и осознавал быстро (не больше минуты). Один из примеров чтения: http://pastebin.com/wQ3de48U. Пример записи: http://pastebin.com/mERTirnH.

* Динамическую типизацию из C# 5 внезапно пользовал мало. Хоть и делалась она (в связке с named parameters и default значениями аргументов функций - про это John Skeet в C# in Depth хорошо написал) как раз для Office COM Interop. Банально неудобно: не работает code completion и опечатки периодически случаются.

* А ну да : ) Самое-то главное: с Excel вся работа делалась через COM API.

* Проект разбит на три сборки: непосредственно конвертилка (модель данных, IO), CLI интерфейс для отладочных целей, GUI для конечных пользователей.

* Процесс конвертации распараллелил на уровне файлов - запинал Parallel.ForEach %)

* Из интересного, правильности ради все строковые ресурсы вынес в локализационные файлы (заодно и научился это в .NET делать).

* В качестве VCS запользовал Mercurial на Bitbucket.

Опыт написание оказался крайне полезным:

  • Уже в ЦФТ полученный багаж позволил за пол дня слабать инструмент о котором чуть позже расскажу.

  • Как уже сказал, держу себя в курсе дел .NET мира:

    • Можно преподавать студентам =)

    • Есть о чём потереть с .NET-корешами и можно вместе посмеяться над стрёмными тестовыми заданиями, которые им присылают.


linkpost comment

Хуяк, хуяк и в продакшн. [Jun. 23rd, 2014|11:40 pm]
[Tags|]
[music |Sabaton - Inmate 4859 | Powered by Last.fm]

Оригинал взят у droids_life в Хуяк, хуяк и в продакшн.

BkSHplFCYAEgP3Z (1)

Вот, кстати, смешно. Но, буквально, сегодня ровно такая фигота была.
Read more...Collapse )
linkpost comment

Старты. [Jun. 18th, 2014|12:21 am]
[Tags|]
[music |Tarja - Never Enough | Powered by Last.fm]

После годового перерыва восстановление ваще огонь идёт. За весну-лето принял участие уже в четырёх стартах.

Первый проходил 2-3 мая в Томске - триатлон-гандикап. Первый день плыли 750 в бассейне. Второй - вел+бег в Томском "технопарке" (это отдельная ржака, кстати). В целом, прошло отлично - 3-е место (из 13) в своём возрасте и 7-е в абсолюте.

DSC03599

DSC03646

GUInpKkkMoM

3jz_yPH7YoQ

Из интересного. Перед заплывом в бассейне застрял в сортире. В итоге пропустил разминку. Во время заплыва потерял шапочку. На вело-этапе сел на хвост к правильному колесу, которое три круга меня нехило тянуло =)

Второй старт - омский полумарафон. Бежали его С Михой Шейниковым и Витей Красноусовым. Всю дистанцию прошли вместе по Витиным часам, задававшим нам темп по GPS. На последних километрах я ушёл от парней. Уложился за 01:36:27. Причём мы все втроём дружно проспали старт.

Третий - XC-триатлон (опять гандикап) в НГУшном лесу. Тут на знакомой трассе я выдал по полной, прийдя 2-м по своему возрасту и 5-м в абсолюте.

DSC_2875

DSC_2915

Ну и самое эпичное - это как я закатил XC-гонку на биатлонке. На финишных 100 метрах выдал из себя спринт, закатив чувака из Северска. По ощущениям приехал хреново, глянул на часы и понял, что ещё успеваю на электричку. На следующий день, по фотографиям понял, что кой-чего пропустил %) Считаю кадр ниже надо делать моей аватаркой на лето 8)

2B0-gcSGCU8

Впереди остались две половинки. В целом, про подготовку - её очень немного. По сравнению с тем, в каком раше я готовился к Выборгу в 2012, я сейчас ваще батонюсь. Во первых, программы нет вообще. Всем рулят дела в ЦФТ. Тренируюсь когда есть свободное время. Пришёл домой за темно - иду бегать. Не выходит вечером - плыву утром. Иногда позволяю себе дня три вообще ничего не делать. По статистике из эндомондо расклад, пока, выходит такой:
- апрель: 8ч 40м бег, 12ч велосипед (шоссе), 7ч 30м плавание.
- май: 12ч бег, 6ч горный велосипед, 6ч плавание.
- июнь: 5ч бег, 8ч 30м на пополам шоссе и горный велосипеды, 4ч плавание.

Стараюсь постоянно делать ОФП и держать баланс между видами, что б не было явного перекоса куда-то. Из ошибок подготовки к Выборгу исправляю следующее: прикатал лежак (спасибо Ваньке, что подшаманил его под мой руль), добыл правильное питание на старты (коробка гелей SiS и порошковый изотоник для разбодяживания - aptonia ISO+). В плавании вообще ничего не меняю, так как по ощущениям мы с Ванькой идельный баланс в нём нащупали.

По инвентарю закупил лишь чутка новой одежды от adidas (в основном белое с длинными руковами/штанинами, так как задрало обгорать на солнце) и выкинул свои кроссовки, которые уже каши, натурально просили. Эх, а они на мне и Омский марафон прошли и Выборг и дуатлон в Северске и каких только говн в Новосибирске не видали... В велосипедах вообще ничего не менял. В бассейне сменил очки (wing которые ещё с универа были порвались) на призовые с XC-триатлона. Ну и понтуюсь теперь в шапочке с флагом России :)

Кстати, протоколы вышеозначенных (и всяких бородатых) стартов можно посмотреть тут: https://www.dropbox.com/sh/4vstt3f69kmt7fr/AADxSkiFkmgeuO-iqPkzY1Aqa
link4 comments|post comment

Журналы. [May. 31st, 2014|12:01 am]
[Tags|]
[music |Sabaton - out of control | Powered by Last.fm]

http://www.nkj.ru/ Фига се 8) Наука и жизнь мало того, что веб-сайт имеет, дык там ещё и PDF-версии журнала можно купить 0_o Кстати, тут попробовал пару номеров подобных изданий взять: National Geographics, Discovery... Капец все они тонут в рекламе. Особенно NG - эту шляпу больше не буду брать. А, раз уж зашла тема за журналы, подписался я тут на электронное идание Игромании в Google Play =) Правильные форматы решают.
linkpost comment

ДДТ: новый "Прозрачный" альбом. [May. 30th, 2014|05:04 pm]
[Tags|]

А у ДДТ новый альбом. Можно онлайн послушать: http://www.ddt.ru/ У Шевчука голос как-то мягче стал : )
linkpost comment

Отладка Excel Interop приложения в VS. [May. 30th, 2014|04:01 pm]
[music |Xandria - Come With me | Powered by Last.fm]

Оригинал взят у droids_life в Отладка Excel Interop приложения в VS.

Первый пост и внезапно не повествовательный, но вопросительный. Отлаживаю приладу на C#, которая через Excel COM API делает всякое. И постоянно такая ситуация: запуск -> точка останова -> "аааа, чёрт, тут забыл +1 поставить" -> stop. Всё бы ничего, но в таком случае запущенный из прилады Excel остаётся висеть в памяти. Казалось бы и фиг с ним, но у меня swap file отрублен и вообще не комильфо таким зомбям висеть в системе. Может, кто знает, как без отработки правильного кода ( а.к.а. Excel.Document.Close(); + Excel.Application.Quit(); ) заставить Excel закрываться при убиении процесса из VS?
link3 comments|post comment

Тезисно. [Apr. 12th, 2014|10:21 am]
[Tags|, , , , ]

Времени нет, караул. Поэтому тезисно :)

  • Готовлюсь к стартам в Минске и Выборге: плаваю, бегаю, чутка катаю на веле (говнище ещё не до конца ушло). Всё вместе с Иваном - вместе восстанавливаемся после прошлогодних недугов.

  • Фехтование вытеснилось циклическими видами где-то месяц назад. Вообще, сезон был вялым: пробил все соревки, на тренировках ничего классного не показывал.

  • Был в Париже =) Диснейленд - волшебное место. Каждый день бегал и о программировании вспоминал только в самолёте, пока бурил GPU Pro 4.

  • Снова начал утка преподавать. Пока что, помогаю г-ну Быстрову с парами по C# у 4 курса. На следующий год уже готовлю мега-программу по .NET/C#.

  • Собрали с Саней зондер-команду разработки под мобилы в ЦФТ. Пишем классный код под Android и iOS. Эх, боссы всё не решатся на WP...

  • Ездил в СпБ на .NEXT - чумейшая конференция, нереальная куча инфы прососалась в мозг. Хочу ещё %)

  • Был на концерте Tarja Turunen ( http://geometria.ru/places/otdikh17626/events/771820 ).

  • По проектам:

    • Медленно но упорно продолжаем шашки :) Уже не пишем фич, только баги правим.

    • Чутка поддерживаем уголки. Даже новый релиз готов, вот только кое-кто ;) всё не может допилить отключение рекламы за бабло.

    • Продолжаю поддерживать конверталку документов для родителей. Ченуши не спят и форматы XML постоянно меняют - мне есть чем заняться. Тем более родители теперь не только из Excel в XML хотят гонять, но и обратно.

    • Пописываю статейки по программированию для внутреннего портала ЦФТ. Может, выложу их широкой аудитории, как руки дойдут.


IMG_0123

IMG_0140

1986

36957283
linkpost comment

(no subject) [Jan. 11th, 2014|07:45 pm]
[Tags|, ]

Начал потихоньку готовиться к новому сезону. Весь прошлый проболел, поэтому много надо наверстать :) Вот сегодня ради интереса выжал максимальный каденс на станке - 174 вышло. В бассейн 3 раза в неделю с Иваном Болдовым хожу. Бегаю :) Никогда раньше зимой не приходилось. Фехтованию, похоже, достанется только среда :(
link2 comments|post comment

Чайку? [Jan. 2nd, 2014|10:11 pm]
Оригинал взят у tonsky в Чайку?

Чай Java. Enterprise Tea Solution

Мягкий желтый чай JavaScript. Хлебни с лихвой

Красный чай Ruby с рельсами. Незабываемый вкус всемирной паутины

Чай Python. Игрушка внутри!

Серый чай PHP. Если неохота выбирать

Чай Visual basic для отделов с офисной лицензией

Чай Delphi. Проверяйте срок годности

Чай Erlang с кусочками зеленых нитей

Долгозаваривающийся чай Haskell. Для чаепитий в академиях

Чай C++ с шишками метапрограммирования

Зеленый чай Clojure (со вкусом скобок)

Чай C# с патентами и кусочками чужой славы

Элитный чай Scala с привкусом зауми и превосходства

Крепкий черный чай C с мгновенным эффектом и долгим мучительным послевкусием

Белый чай Objective-C с кусочками элитарности и принуждения

Бурый чай Go для домашних питомцев

Чай Perl с ароматом кирзовых сапог для ценителей и привыкших

Редкий синий чай OCaml с ароматом отчаяния и спартанства

Красный чай node.js на смехе и слезах

Чай Assembly. Продается в виде рассады
linkpost comment

@ЦФТ. [Dec. 28th, 2013|07:07 pm]
[Tags|]

Давно обещал рассказать о том, чем сейчас занимаюсь. Ещё летом я ушёл из плэйтоксика. Основная причина - здоровье. Вторично - там стало нехер делать. Всё из-за того же здоровья отказался от переезда в СпБ делать "кораблики" ( http://worldofwarships.ru/ - я туда аж два собеседования прошёл: сначала ещё позапрошлым летом на КРИ на программиста графики, а позже на программиста спец. эффектов ). Но писать на С++ хотелось сильно, поэтому позвонил в Академсофт а.к.а. Navitel, у которых собеседовался ещё после ухода из СофтЛаба.

Без особых проволочек вышел на работу... и столь же скоро свалил от туда (суммарно, около недели я там пробыл). Натурально, как в Snatch: "Хотите что-нибудь задекларировать? Да! В Navitel ни ногой." Уныние, каменный век и бардак: выдали голый комп без ОСи - развлекайся; выдали некомпилирующиеся исходники - развлекайся (причём, не компилировались не только исходники, но и сборочные скрипты тоже не работали); continious integration? - не, не слышал; какое-нибудь введение в курс дела? - не, вот тебе кусок некомпиляющегося говна, прикрути к нему какую-нить библиотеку. Учитывая, что меня ещё и посадили не в отдел к бывшему научруку Коле писать 3D-графику, а под начало Кости править баги (за ним дерьмище в СофтЛабе нехило пришлось повыгребать), не долго думая, свалил из этой дыры.

Далее собеседовался в два места - ЦФТ и Social Quantum. Про первое место вспомнил совершенно случайно - бывший коллега-босс из плэйтоксика звонил и спрашивал людей в мобильную разработку. Второе место даже не помню, как нашёл. В S.Q. дали занятное тестовое задание - мелкую игру написать :) Вспомнил OpenGL и WinAPI. Решение им понравилось, но я выбрал ЦФТ. На данный момент уже прошёл трёхмесячный испытательный срок. Компания здоровенская, поэтому всё, что рассказываю верно только для команды в которой работаю :)

Сейчас у нас зондер-команда из трёх iOS-ников и трёх Android-щиков (не считая одного тестера). Я пасу Аndroid-парней, а Санёк Казанин - iOSников. Список обязанностей сложно описать. Если коротко, то должен вовремя выдавать из себя и подчинённых качественный код =) Делаем всякие вариации на тему мобильных банков. Из того, что уже зарелизили: мобильная кукуруза и инфосервис для денежных переводов. В данный момент пилим мега-секретный мега-проект под андроид, качество которого, надеюсь, "даст просраться" %) В хорошем смысле, конечно. В целом, если не считать, что большинство задач - "лепка горшков", ЦФТ - самое приятное место, где приходилось программировать. Да и в лепке горшков при должном старании можно найти вызовы. Конечно, не столь крутые, как в разработке игр. Но помедитировать есть над чем. Так, необходимость оправдывать ожидания больших боссов толкает создавать инструменты принципиально поднимающие скорость и качество разработки. Тот же roboguice - детская пукалка, ха-ха, по сравнению с нашим tool-set'ом. По интересностям и по мелочам... У нашей мобильной команды нет менеджера в его классическом понимании. Ещё наконец-то реализовал свою давнюю затею - гонять на CI-сервере статический анализ кода на каждый коммит в VCS %) Причём, ищутся не только ошибки/ляпы, но и косяки дизайна, в духе циклических зависимостей, слишком "толстых классов" и пр. IDEA+TeamCity рулят ;) Постоянно устраиваем с коллегами мини-семинары (иногда приглашаем парней из серверной команды поучаствовать), холиварим периодически, пописываем статейки для новичков на корпоративный портал. В целом, тот уголок ЦФТ, в который я попал, оказался на удивление приятным во всех отношениях местом, изменившим моё представление о компании.

А, ещё отвлечённое. Решил таки завести отдельное место для заметок по программированию: http://droids-life.livejournal.com/ . Репосты буду, конечно, просасывать сюда, так что, всем, кто читает этот жж ничего делать не надо : )
linkpost comment

navigation
[ viewing | most recent entries ]
[ go | earlier ]