?

Log in

No account? Create an account
 

Russian DotNet Alliance

About Свежие записи

Размышления о Духе 29 авг, 2009 @ 03:44
nim_cch
Хочу начать описание человека с самого его начала. Что такое дух? Сказать бы просто дух это... Но так легко не получится потому, что вы мне не поверите.

Читать Далее

10 способов "не облажаться" начинающему программеру 28 мар, 2008 @ 11:54
screwdiver
Рано или поздно, все совершают одни и те же ошибки. Рецепты для того, чтобы их избежать достаточно просты. Сложность заключается лишь в том, что их нужно соблюдать.

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

Больше информации для новичков по теме будет на бесплатном тренинге "Как начать зарабатывать программисту". На сайте http://www.rich-it.com можно узнать подробнее.

7 типичных ошибок программиста в выборе карьеры 26 мар, 2008 @ 15:13
screwdiver
Не секрет для любого программера, что успешная карьера во многом зависит от того, как ее начать. Если изначально направить свои силы в правильное русло - можно сэкономить массу времени и усилий, гораздо быстрее прийти к стабильной зарплате и потребности в себе, как в специалисте. Однако, в самом начале пути, будучи еще студентами и устраиваясь на свою первую работу, программисты совершают одни и те же типичные ошибки, которые приводят к неопределенности и к неумению преподнести себя, как специалиста.

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

Далее...Свернуть )
Заключение:
Не все йогурты одинаково полезны и не каждый начинающий специалист может хорошо преподнести себя. Но тем не менее, всем нам приходится периодически "продавать себя" и всем хотелось бы продать себя подороже. Этому редко учат в институте, но в конце-концов, это также необходимо, как и хорошо разбираться в своей области. И самое главное, если это уметь, то все в конечном счете выигрывают.

Статья взята с www.rich-it.com. Больше по теме можно узнать здесь.

Вакансия разработчик .net (Москва, Киевская) 13 мар, 2008 @ 11:37
melyk

Добрый день! Компания- системный интегратор открывает позицию Разработчик  .net

Требования:

  • уверенные знания Windows XP/2000/2003, приветствуются навыки в администрировании Active Directory
  • знание и опыт (не менее чем 1.5-летний) работы с языками программирования C#.NET, VB.NET (один из перечисленных - обязательно)
  • знание платформы .NET, опыт работы с технологиями Windows Service, ADO.NET
  • знание и опыт (не менее чем 1.5-летний) работы с Oracle (желательно 9i и 10g) и/или MS SQL Server (уверенные знания PL/SQL и/или T-SQL)
  • опыт установки и настройки офисных продуктов
  • Опыт разработок Sharepoint

Дополнительно (как плюс, но не обязательно):

  • знание и опыт работы с Crystal Reports
  • знание и опыт разработки на ASP.NET
  • знание и опыт работы с языком программирования Visual Basic 6.0 / VBA
  • опыт работы с технологиями COM/DCOM, COM/ActiveX
  • опыт работы с системами электронного документооборота

Условия:

  • соц пакет (медицинская страховка, уроки английского языка)
  • территориально: м. Киевская

По оплате- будем отталкиваться от ваших требований, но пока вилка от 2000$.

Ждем резюме на it_job@list.ru


очень нужны программисты C# (Москва) 11 июл, 2007 @ 12:06
melyk

Привет, всем, кого интересует работа в IT )

Очень нужны хорошие программисты c#. У кого есть опыт и кто заинтересован в работе, просьба отправлять резюме на it_job@list.ru
 (также есть и другие ваканси... сисадмин например)

Вспомните своих друзей и знакомых, если не нужно вам :) 


Требования:



  • знание и опыт (не менее чем 1.5-летний) работы с языком программирования C#.NET, знание платформы .NET, технологии ADO.NET

  • знание и опыт (не менее чем 1.5-летний) работы с MS SQL Server (уверенные знания PL/SQL и/или T-SQL)  и/или Oracle (желательно 9i)

  • полная занятость.

Привлекательный соц пакет. Территориально: ст метро Новые Черемушки.

Зарплата: 2200 фикс+ бонусы


Other entries
» Extended MAPI
Приветствую, всех вас - о, знатоки framework!
У меня к вам есть вопрос, и, я надеюсь, что еще не все из вас забыли свои корни - С++.

Вопрос - применение MAPI через OOM.
Чтобы получить доступ из объекта MailItem к интерфейсу IMessage существует специальное свойство MAPIOBJECT, которое возвращает умный указатель на интерфейс IUnknown объекта, у которого существует нужный мне интерфейс IMessage. Проблема заключается в том, что я не знаю, где лежат идентификаторы интерфейсов - чтобы их можно было использовать в вызове queryinterface.
Может в каких заголовочных файлах вроде mapix.h или достаточно импорта одного mapi32.dll и там уже объявлены глобальные переменные?

Заранее спасибо!

P.S.
Жаль, что на данный момент получить доступ к свойству MAPIOBJECT из кода управляемых языков нелья:-(
Хотя есть достойная замена - доступ из dotNet впрямую к Extended MAPI?! Втупую создаем wrapper для mapi32.dll и что все готово? Не просто ли... Так почему один из известных MVP (создатель OutlookSpy) утверждал, что из, к примеру, того же C# это не получится?
» А давайте пострадаем хуйней..
Пишет хуй магическим образом
Кто - нить знает почему?:)
Аналогичный кусок кода по наводке одного из коллег был обнаружен мной в программе, которая показывала пароли к MS Access.
» Обьяснение принципов защиты от Рефлектора
В этом посте я хочу обобщить идеи защиты от рефлектора, предложенные vitaly_cypress здесь и kaban_mefodyi здесь.
Значит для начала уточним исходные позиции любую нетовскую программу можно ildasm превратить в msil код, откомпилировать это код ilasm и получить равноценную копию этой программы. Как этому противостоять я не знаю, в этой статье рассматриваются меры противодействия декомпиляции программы на любой язык программирования .NET, кроме IL.
Далее везде речь пойдет о C#, но нижесказанное справедливо для любого языка высокого уровня

Базовая идея того, что будет дальше излагаца, состоит в следующем, не все последовательности конструкций IL можно перевести на C#. Например, что является аналогом операций: ldc, pop в C#?. Таких атомарных конструкций у C# нет.
Рассмотрим на практике пример. Я его минимизировал, чтобы показать саму суть:
.method public hidebysig static void SeeMeInReflector() cil managed
{
br.s skipPop
pop
skipPop:
<...Здесь мог быть Ваш гениальный код...>
}
Что происходит, когда эта функция открывается Reflector с выбранным C#? Аналога pop нет, а выкинуть этот кусок кода у рефлектора наглости не хватает и он честно вылетает по exception.

Теперь этот:
call string ConsoleApplication1.Program::MyReadLine()
ldstr "Hello "
call void ConsoleApplication1.Program::MyWrite(string)
void ConsoleApplication1.Program::MyWrite(string)
переводится в
Program.MyWrite("Hello ");
Program.MyWrite(Program.MyReadLine()); (поменялся порядок вызовов методов!)

В данном случае  в C# нельзя разнести вызов функции и установку аргументов. В IL коде сначала накидали аргументов для двух функций, а потом их вызвали. Причем Рефлектор не вылетает по exception, а просто тихо генерит неправильный код. Это даже лучше, поскольку можно очень злобно обыграть, ну а тестовая программа это обнаружит и выдаст предупреждение.

Теперь как делаеца защита программы, компилируется C# версия программы. потом ildasm получаеца исходный код, который немного меняется ручками в текстовом редакторе, поскольку Visual IL .NET. 
Код, подтверждающий вышеизложенные идеи

UPD. я честно хотел пошутить насчет Visual IL.NET, но как оказалось в каждой шутке есть доля истины.
На что мне указал vitaly_cypress и дал ссылку на Visual IL.NET
» Защита от Reflectora 2
Вчера собрался идти спать, выключил комп, но спать что то не хотелось, я взял свой ноут, и нарыл вот какой прикол!
Вначале хочется сказать спасибо kaban_mefodyi, за то что натолкнул на эту мысль здесь.
Так вот, я немного посидел, и создал вот этот гениальный код :)

Самое главное сдесь, это первые 8 строчек, они впринципе ничего не делают, кидают в стэк переменные, потом маленькое ветвление, и чистят за собой стек :)
Теперь внимание, берем этот, уже скомпиленный код здесь, и даем его рефлектору, и что мы видим :)
Да, рефлектор обделался :-D
Теперь осталось написать маленькую утилитку, чтобы она ходила по исходникам, и вставляла в начало каждого метода эти волшебные строки :) (Регулярные выражения еще никто не отменял)

ЗЫ Самое главное, что бы директива .maxstack ,была выставлена больше 3, или вообще убрать её, а компилятор сам добавит :)
» Защита от Reflectora
По этой ссылке лежит программа (откомпилирована под .NET 2.0)
1) предлагается запустить ее на выполнение
2) получить исходный код программы на C# через Reflector
3) откомпилировать полученный на шаге 2 код и сравнить результаты его выполнения с шагом 1.

P.S. для Кипариса, все-таки вчера я был прав, но выпитое пиво мешало мне донести до тебя свою мысль.
Top of Page Разработано LiveJournal.com