Skip to main content

Posts

Showing posts from 2008

Happy New Year!!!

Новый Год уже шагает по планете и я хочу присоединиться к пожеланиям миллионов блоггеров и пожелать всем Вам счастья и удачи в Новом Году ;). Happy New Year и EXIT_SUCCESS из новогодних празднеств ;)

Ваш блог заблокирован за спам :(

Вот уж не думал :) зайти и увидеть такое в dashboard Хорошо что на почту пришло извещение да и операция разблокирования заняла всего-то пару минут. Будем надеяться, что все обойдется :)

Getting Ruby Array.uniq! work for array of objects

Иногда возникает задача удалить дубликаты из массива объектов. В Ruby для решения этой задачи в классе Array есть методы uniq и uniq!. Отличие первого от второго состоит лишь в том, что второй производит in place модификацию массива, а первый возвращает результат в виде массива. Для того, чтобы эти методы работали для custom классов необходимо чтобы у классов были определены методы hash и eql?. class TestClass attr_reader :a, :b, :c #Ctor def initialize(a,b,c) @a, @b, @c = a, b, c end def hash "#@a #@b #@c".hash end def ==(p) @a ==p.a and @b == p.b and @c == p.c end def eql?(p) self == p end def to_s "#@a,#@b,#@c" end end a = [] a << TestClass.new(1,2,3) a << TestClass.new(1,2,3) a << TestClass.new(3,2,1) a << TestClass.new(3,2,3) a << TestClass.new(2,3,3) a.uniq! a.each do |elem| p elem.to_s end Т.е. одного eql? не достаточно, как это указано в PickAxe а нужен еще и hash method который должен возвращать цело

Блоговщина #2

Как-то провтыкал, что в субботу блогу исполнилось 2 года. Чтобы не нарушать традицию сделаю обзор статистики блога за этот период. Итак в номинации "Самая Популярная Статья" места распределились следующим образом std::string vs. const char* . Comparison - 1 405 просмотров С & C++ useful resources - 888 просмотров "Must Read" C++ Books - 874 просмотра Последние две наверное потому, что ссылки на них висят в сайдбаре блога :) в номинации "Самый Популярный Бразуер" победила, как и в прошлый раз , огненная лиса. в номинации "Самый Популярная ОС" снова победила самая популярная ОС. в номинации "Страна Где-Меня-Больше-Всего-Читают" тоже ничего не изменилось А всего за 2 года блог посетило аж 10 432 уникальных посетителей =), а судя по тому что всего посетителей было 17 600, то можно сделать вывод, что некоторый приходили сюда аж по нескольку раз =). Вот где-то так в общем :) Спасибо вам большое за то, что вы читаете то, что я пишу :)

Empire strikes back: Steven Dewhurst's response to Linus's criticism against C++

Помните нападки Линуса на С++ о которых я когда-то писал ? Когда он в довольно жесткой форме высказался в отношении того, что он думает о С++? Ну вот Steven Dewhurst ему отвечает: I think it's only fair to point out that Linus' diatribe is more than a year old, and he has spoken in more measured and printable tones elsewhere about the same subject. Less excusable, however, is that he makes the claim that C++ cannot be used in resource-constrained areas with nothing but anecdotal evidence to support his claim. Linus has done good work and has earned his soap box, but he also has a professional obligation to make sense while he’s holding forth. (For those who follow such things, this is an instance of Gotcha #12, “Adolescent Behavior,” from C++ Gotchas.) The argument that abstraction and efficiency are mutually-exclusive or that they're mutually exclusive in the context of C++ is demonstrably false. Lately, much of my work involves writing embedded code in C++ with heavy us

Gordon “Fyodor” Lyon "Nmap Network Scanning" book Free beta release

Если вдруг кто еще не знает, то Фёдор (хоть убейте но единственные ассоциации которые у меня вызывает это имя - это "Дядя", "Матроскин" и "Простоквашино " =) ) выложил уже довольно давно в онлайн доступ pre-release бета версию своей книги "Nmap Network Scanning", официальный запуск которой планируется в этом месяце. Онлайн версия не полная, однако тот обьем материала, который доступен уже превышает все то, что было опубликовано прежде (не, ну может конечно я и перегнул, но все же ...). Онлайн версия это кончено хорошо, но интернет не всегда есть, да и хорошо было бы иметь локальную копию - так, на всякий случай. За сим: wget -r -l0 -np -k -p http://nmap.org/book / -r - рекурсивная загрузка -l0 - бесконечная вложенность ссылок -np - no parent, т.е. не загружать файлы выше базового адреса -k - конвертировать ссылки для удобства оффлайн просмотра -p - загружать все файлы, которые необходимы для отображения html страниц и не забываем п

Ubuntu 8.04 + ATI + 2 monitors ==♥ღ♥ LOVE♥ღ♥

Ubuntu - это же надо, каким линукс стал. Открываешь страничку в лисе с java апплетом, говорит, что нужно поставить плагин. Ставишь плагин тут же побеспокоятся о том, чтобы был установлен java пакет еще и предлагают на выбор 4 или 5 вариантов. Все работает, конфигов править не нужно. Проблем с видеокартой тоже не оказалось - всплыло преложение поставить проприетарный драйвер, который установился без всяких проблем. К моменту, когда завершилась установка обновлений у меня в голове уже стоял трехэтажный мат - ЛИНУКС НЕ ДОЛЖЕН БЫТЬ ТАКИМ!!! Я так любил, когда что-то не работало и в результате правки конфигов начинало работать так как должно испытываешь такое чувство морального удовлетворения от проделанной работы, что просто словами передать нельзя... Однако, несмотря на все дружелюбие, второй монитор работал не так как мне хотелось и содержал clonned output. В предвкушении предстоящего сеанса работы в редакторе над xorg.conf я залез в дебри Сети. Долго искать не пришлось (гугл помог)- я

if (date == "09/12/2008") blog::post << "Happy Programmer's Day" << std::endl;

#include <cstdlib> #include <iostream> int main (int argc, char** argv){ std::cout << "I wish you all the best\n" << "on this Programmer's Day!\n"; return EXIT_SUCCESS; } Хочу пожелать всем коллегам чистого кода над головой, новых идей, завершенных майлстоунов, интересных проектов и еще, конечно же, парочку отличных мониторов. Поздравляю Всех Программистов С Их Профессиональным Праздником - Днем Программиста !

Небольшое обновление на блоге

Почитав этот пост на блоге Записки дебианщика , подумал что наличие нескольких вариантов подписки действительно может кому-то понадобиться. Поэтому добавил на блог два новых RSS фида (в добавок к тому, который уже существовал) и подписку по e-mail: Полный фид блога доступен по старому адресу http://feeds.feedburner.com/deepencpp Короткий фид блога (первые 200 символов поста) доступен по адресу http://feeds.feedburner.com/deepencpp/short Фид комментариев можно найти по адресу http://feeds.feedburner.com/deepencpp/comments Кроме того, если у кого есть желания, то полный фид блога можно получать по электронной почте Ниже скриншот, демонстрирующий как это все теперь выглядит Кроме этого фид комментариев и короткий фид при помощи FeedBurner BuzzBoost транслируются теперь в сайдбар блога. Преимущество этого сервиса по сравнению с виджетом, позволяющим добавить содержимое фида в блог состоит в том, что он оперативно обновляется и удаленные комментарии спаммеров в нем долго не живут. На это

Google Chrome

Выбирая название для поста я особо не оригинальничал . Что бы такая компания как Google не сделала, это всегда вызывает практически моментальную реакцию онлайн сообщества. Для меня все началось достаточно просто - я подписан на несколько блогов Google и когда в двух из них упомянули проект нового браузера основанного на WebKit , я не устоял и решил посмотреть на то, что доступно уже сейчас. К моему великому сожалению, бета версия нового браузера от Google под названием Google Chrome будет доступна только завтра (то бишь уже сегодня), а сейчас пока готовы многочисленные статьи в блогах и на Википедии и заниметельная comic book . Прочитав некоторые обзоры, могу сказать, что модель предлагаемая разработчиками Гугла мне определенно нравится. Подход в отношении безопасности заслуживает особого внимания - для каждой вкладки используется отдельный процесс, что позволяет благополучно убить неблагополучную страничку без необходимости проделывать эту процедуру со всем браузером. Кроме того, каж

Sysadmin Books and Sysadmin Day

Символичное чтение у меня получилось. В День Сисадмина читаю книгу для Сисадминов - "DNS и BIND" Пола Альбитца и Крикета Ли издательства О'Рейли. В общем могу всячески рекомендовать, если вдруг у кого возникнет желание разобраться в том, как работает DNS. В ней все это довольно подробно расписано и вполне человеческим языком. Я, если честно, был удивлен, когда узнал, что понятие делегирование домена означает передача ответственности по его администрированию (в том числе и по делегированию субдоменов) третьей стороне, потому как сразу же возникает вопрос - а чем собственно является процедура продления домена у регистраторов? Ну а всех Системных Администраторов хочу подравить с их профессиональным праздником ;-)

Yandex Blogosphere Pulse - C++ Ведет Со Значительным Отрывом

Яndex считает, что о C++ в блогах пишут гораздо чаще, чем о java, .NET, python, php, ruby. Интересно чем это обусловлено? Популярностью языка? его сложностью? количеством граблей? складом ума людей, которые отважились на нем писать программы? Как вы считаете? Пульс блогосферы за год по запросам c++, python, ruby, php, java и .net Upd: как оказалось обусловлено Яndex'ом. Подробнее - см. в камментах ))

C and C++ Cheat Sheets

Нашел в сети несколько шпаргалок по C/C++: 1 , 2 , 3 , 4 , 5 , 6 , Unicode-enabling Microsoft C/C++ Source Code , Understanding C++/Quick Reference , C++ Containers Cheat Sheet . Хотя, надо признаться, что шпаргалки от Amy Hoy по Rails выглядят значительно симпатичнее ))

back|track>> 3 released

20 июня Max Mozer , один из разработчиков linux дистрибутива Backtrack сообщил в своем блоге о выходе релиза 3-й версии этого penetration testing дистрибутива. Скачать его можно здесь . Must Have всем, интересующимся вопросами взлома и защиты. Во всяком случае если не пригодится, то не помешает уж точно =).

5 программ, с которыми я работаю ежедневно

via Begemot получил вышеназванную эстафету и задумался поскольку таких программ достаточно много и выбрать из них наиболее часто используемые не такая уж и простая задача. Дабы не повторяться лишний раз, то браузер и мессенджер остались теми же )). Помимо них использую в порядке убывания частоты: Notepad++ - простой, компактный, удобный и быстрый текстовый редактор, поддерживающий плагины, подсветку синтаксиса и множество других полезных и приятных мелочей, да в добавок еще и распространяемый под лицензией GNU GPL. Его я, в основном, использую для написания кода и правки текста. Remote Desktop Client - использую для доступа к тестовому энвайронменту, который развернут на другой машине. TortoiseCVS - для чего используется, объяснять думаю не нужно. Хотя возможны вариации: TortoiseSVN , TortoiseHg - иногда хочется посмотреть на исходники какого-нить проекта, а они либо в svn либо в mercurial. Download Master - менеджер закачек, с тех пор как я для себя его открыл он экономит мне мн

Задачка на собеседование

Многие у себя в блогах публикуют разные головоломные задачки, а тут как раз сегодня у сотрудника возникла ситуация над которой мы некоторое время помедитировали, пока не пришел nimblemag и не обьяснил. Код, собственно, ниже. Код рабочий. Обьяснить почему работает. #include <cstdlib> #include <iostream> using namespace std; int main (int argc, char** argv){ cout<<argv[argc-1]<<endl <<argc[argv-1]<<endl; return EXIT_SUCCESS; } Ответ ниже белым по белому (да, такой способ я у Эльдара Мусаева подсмотрел) чтоб посмотреть выделяем текст ===отсюда=== На самом деле все просто и вытекает из комутативности операции сложения: #include <cstdlib> #include <iostream> using namespace std; int main (int argc, char** argv){ cout<<(*argv+(argc-1))<<endl<<((argc-1)+*argv)<<endl; cout<<*(argv+(argc-1))<<endl<<*((argc-1)+argv)<<endl; return EXIT_SUCCESS; } ===досюда=== Отдельное Спасибо White Knight

Разгребая закладки - Fighting the Lemmings

Большинство новостей из мира Open Source я получаю через канал новостей сайта OpenNet.ru . Обычно если новость меня чем-то заинтересовала, то она оседает у меня в закладках, а так как я интересуюсь очень многим, то можно представить во что превращается со временем панель закладок огненной лисы . Посему периодически я их разгребаю, попутно просматривая. Так и в этот раз увидел у себя в закладках ссылку на статью Fighting the Lemmings , о разработке переносимого ПО. Мысли, в принципе, практически идентичны этим , что лишний раз подтверждает их правильность. И еще одно - я чуть ранее писал про мультик Big Buck Bunny, созданный при помощи Blender , так вот, его полную версию уже можно скачать или посмотреть на youtube

О пользе открытого кода в учебном процессе

Прежде чем высказаться по теме, хочу поделиться несколькими ссылками, которые могут пригодиться. Первая - Sitepoint раздают за бесплатно книгу "The Photoshop Anthology: 101 Web Design Tips, Tricks & Techniques", загрузить можно в двух вариантах - print-ready (более высокого качества) и, очевидно, для чтения с монитора. Линк на загрузку присылают на мыло. Вторая - разработчик сетевой библиотеки для С++ Boost.Asio Chris Kohlhoff рассказывает об отличиях между Asio и Boost.Asio. Ну а теперь по теме. Хоть она и обсуждалась уже почти где только можно, я же хочу рассказать о случае, которые произошел не далее как вчера. Вчера жена делала диплом, основную часть которого составляет куча расчетов газотурбинного двигателя. Эти расчеты производятся при помощи набора консольных приложений, которые изначально писались еще во времена, когда программы хранились на перфокартах, а с приходом DOS были адаптированны под новую платформу (правда я предполагаю, что до этого они были адаптир

Designing and Building Portable Systems in C++. Part II - Solutions

....продожение. Начало . Как нетрудно было догадаться из предыдущего поста, пожалуй единственным подходящим решением проблем, возникающих при разработке портабельных систем, является абстракция и обобщенное программирование - сильные стороны C++. Описание техник можно поискать в серии книг C++ In Depth, книгах Мейерса и прочих гуру, я же приведу некоторые мысли относительно моментов, на которые следует обратить внимание, если вы используете для разработки сторонние библиотеки/компоненты. Наличие довольно большого колличества библиотек для решения самых разнообразных задач, компилируемых под несколько основных платформ, существенно облегчает работу программиста. Однако все же существует несколько вопросов, которые возникают при использовании сторонней библиотеки при разработке продукта, и практически все они относятся к качеству кода... Первым моментом, на который стоит обратить внимание, пожалуй, будет стабильность кодовой базы. Согласитесь, не совсем приятно будет, когда при выпуске

Designing and Building Portable Systems in C++. Part I - Problems

В прошлом посте я запостил ссылку на документ, опсывающий некоторые тонкости, разработки портируемых программ на C++. Наконец дошли руки более подробно прочитать этот документ и я с удивлением обнаружил, что на прошлой работе с некоторыми описываемыми ситуациями мне приходилось сталкиваться. Несмотря на то, что сам язык был спроектирован как платформонезависимый, создание кроссплатформенного ПО не является таким простым, как хотелось бы. Однако обо всем по порядку... Одной из основных проблем, при написании портируемого кода на С++, являются отличия компиляторов. Несмотря на то, что сам язык описан довольно детально в стандарте, трактовки самого стандарта в станах компиляторостроителей иногда различаются. Кроме того, C++ часто ругают (вполне заслуженно) за сложность, особенно когда дело касается шаблонов. Эта сложность по определению ну никак не может облегчить жизнь как разработчикам компиляторов, так и "обычным" программистам, которые эти компиляторы используют. Однако н

Баги - страшные и ужастные

Рядовой программист при написании программы зачастую не особо задумывается об ошибках, которые волей-неволей, но закрадываются в код. Эти ошибки зачастую совершенно неочевидны и посему приживаются довольно надолго, как например этот 25 летний баг, доставшийся всем BSD системам по наследству от 4.2 BSD . Еще некоторое время назад я совершенно не понимал зачем нужны все эти обновления, хотфиксы, патчи и пр., если в большинстве случаев ПО работает корректно. Однако информация (особенно ценная), будучи одним из самых востребованных товаров, зачастую страдает от недостатка внимания к ее защите. Вы думаете, что ваш компьютер полностью защищен? Тогда взгляните хотя бы сюда . С тем обилием нелицензионного софта на просторах нашей Родины велик риск поставить себе ОС или софт с уже "предустановленными" программами - троянами, вирусами, различными руткитами )), которые тут же примутся усердно работать, собирая информацию о вас и вашей деятельности и отсылая ее своим "хозяевам"

Yet Another Cpp Coding StyleGuide and even more...

Набрел на сайте PoCo на два интересных документа: Designing and Building Portable Systems in C++ и C++ Coding Style Guide . В конце первого документа нашлась еще одна очень интересная ссылка на перечень С++ библиотек (как свободных так и закрытых). В PoCo, к стати, недавно добавили поддержку MySQL .

Big Buck Bunny Open Movie Project

После завершения проекта Orange , результатом которого стало создание анимационного фильма Elephants Dream с открытым "исходным кодом", Blender Foundation и Blender Community начали новый проект Peach , целью которого является создание небольшого анимационного фильма. Как и в прошлый раз, небольшая комманда лучших 3D аниматоров из blender community собралась в Амстердаме для работы над проектом, который длился с Октября 2007 по Апрель 2008. Как и в прошлый раз для работы с изображением и анимацией использовалось открытое ПО (blender, gimp, может что еще... ). Исключением являлась работа со звуком, для которой использовались технологии Dolby Laboratories (по крайней мере для выпуска фильма на кинопленке). В первую неделю комманда занималась preproduction work, с этой целью они организовали Peach Workshop для проработки деталей сценария, по окончании которого был разработан development roadmap и шестимесячный план: По ходу дела, за неделю до старта проекта у него появились

C and C++ Secure Coding Standard

По ссылке с OpenNet набрел на готовящийся к выходу неформальный стандарт по безопасному кодированию на С и С++ . Довольно приличное колличество информации собрано в одном месте, что, естественно, радует. Стоит прочтения, единственное, что меня раздражало - это жутко неудобная система навигации по разделам. Хотелось бы заполучить это все в plain html или в pdf. Может когда вычитают, сделают. Будем надеяться. В общем рекомендую всем, кому приходится писать на этих языках (впрочем некоторые правила применимы и не только к С с С++). Надо добавить линки в C & C++ useful resources .

Netflix Prize. Just give it a shot...

Как это ни печально, но синоптики с погодой в Харькове сегодня не ошиблись. С самого утра дождь. То то я так долго просыпался. Однако этот пост будет не об этом. Некоторое время назад блуждая по Википедии в поисках информации по data mining наткнулся на статью (эта же статья на английском ) о конкурсе, организованном компанией Netflix - Netflix Prize . А тут недавно и в блогах пробежал пост об этом конкурсе. Решил более подробно ознакомиться. Netflix занимается арендой DVD через интернет. Ну и как многие e-commerce компании у них есть адвизори, т.е. список товаров (или услуг), которые они рекомендуют клиенту, на основании уже совершенных заказов. Для повышения вероятности того, что рекомендуемый фильм понравится клиенту, Netflix был разработан основанный на линейной регрессии алгоритм Cinematch, который дает СКО на тестовом множестве даннах 0,9525. В нетфликсе почухали репу и решили учредить конкурс - тот кто добьется 10% улучшения алгоритма получит 1 млн американских денег. Кроме

5 инструментов

Принимаю эстафету "5 инструментов без которых я не могу работать продуктивно" от Алены С++ . Но сначала маленькое предисловие: поскольку речь идет именно о продуктивности, то я не буду описывать все те тулзы, с которыми мне приходится иметь дело при разработке ПО. Постараюсь написать лишь о тех, которые позволяют мне быстро и в сжатые сроки решать какие-либо повседневные задачи. Итак эти самые 5 инструментов: Firefox - хороший браузер, к нему написано множество дополнений, которые облегчают работу ( ScrapBook , Flashblock , Foxmarks , MinimizeToTray , ImgLikeOpera ). Pidgin - multi-protocol Instant Messaging client, поддерживающий AIM, Bonjour, Gadu-Gadu, Google Talk, Groupwise, ICQ, IRC, MSN, MySpaceIM, QQ, SILC, SIMPLE, Sametime, XMPP, Yahoo!, Zephyr. Простой, есть версии как для Linux так и для Windows. Far Manager / Yakuake + bash + mc - файловые менеджеры, консоль, командный интепретатор соответственно под Windows и Linux, так как обеими этими системами я пользуюс

Суждено ли С++ стать платформой?

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

Линус критикует C++

Via aruslan узнал об ответе Линуса на вопрос Dmitry Kakurin почему Git написан на С а не на С++. Больше всего понравились цитаты Quite frankly, even if the choice of C were to do *nothing* but keep the C++ programmers out, that in itself would be a huge reason to use C. Что и говорить, тут трудно не согласиться, поскольку многие программеры на С++ считают себя сильно "мегакрутыми" (коими в действительности не являются) для того чтобы снизойти до чистого С. Это действительно хороший способ :-) C++ leads to really really bad design choices. You invariably start using the "nice" library features of the language like STL and Boost and other total and utter crap, that may "help" you program, but causes: - infinite amounts of pain when they don't work (and anybody who tells me that STL and especially Boost are stable and portable is just so full of BS that it's not even funny) - inefficient abstracted programming models where two years down the road you

Сертификация на brainbench

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

А возможно и не const...

Прочитав недавно в блоге Алёны С++ статью Возможно, самый важный const , губоко задумался нельзя ли все-таки как нибудь обойти запрет на следующее string&s = string("abc"); int&i = 1; И совершенно неожиданно вспомнил, что когда-то давным-давно на далеком-далеком форуме (чет меня опять не туда понесло ;-)) прочитал о том, как тимлид учил зеленых программеров: " тыкаем в любое место throw 1 ; если программа летит - бьем дубиной по голове " Это я к тому что при генерации исключения происходит его копирование, поэтому обработчик имеет копию исходного исключения. Хотя на реализацию не накладывается ограничений и исключение может быть скопировано несколько раз до того, как будет перехвачено. Т.е. исключение, которое не может быть скопировано - не может быть и перехвачено. try { throw 1; } catch(int&i){ //можем менять i } catch(...){} Проверяем try { try { throw 1; } catch(int&i){ cout<<"int& "<<i<<endl; i=

gcc. Полное руководство

"GCC: The Complete Reference" однозначно must have для каждого программера под linux , который ценит свое время. Содержание вообще привело меня в неописуемый восторг - мало того что присутствуют разделы по конфигурированию, установке и тестировании компилятора, но также рассказано о сборке кросс-компилятора (чего мне пока с последними версиями gcc проделать на удалось - под ARM собираться не хочет, binutils собираются, bootstrap compiler тоже, а сборка libc - сваливается... или это сборка полноценного компилера? не помню уже... после десятка безуспешных попыток я это дело отложил на неопределенное время. Может книжка эта поможет?), расширениях GNU для С и С++, Objective-C, Java, Fortran и Ada, GDB, смешивание языков, сборка компилятора для ембедед систем тоже не обделены вниманием. В общем и целом - 600 страниц ОЧЕНЬ ПОЛЕЗНОГО ТЕКСТА.

Сдвиг в индустрии?

В последнее время писать особо времени нет в виду подготовки к защите диплома в феврале. Да что там писать, даже на работу иногда времени нет, благо что она part time (хотя де-факто - в большинстве своем full time). Так вот, бродя по сайтам ведущих харьковских фирм, занимающихся разработкой ПО, наткнулся на сайте компании Program-Ace на вакансию Senior C++/Haskell developer . Приглашаем к долгосрочному сотрудничеству специалиста профиля Senior C++/Haskell developer – для участия в разработке архитектуры в рамках уже сложившейся команды, которая имеет не только опыт в данной области, но и целый ряд успешно выполненных проектов (прекомпилятор ESQL/C и т.д.). Мы ищем настоящего профессионала, которому свойственны: стремление к решению нетривиальных и сложных задач с использованием самых современных подходов и решений; желание всесторонне планировать и активно разрабатывать архитектуру; высокая степень реализации профессиональных амбиций. Обязанности: • Разработка архитектур