Спасибо за ссылку. Я что то подобное раньше делал, но потом решил отказаться от CruiseControl.NET, меня не устраивало отсутствие некоторых возможностей CruiseControl.NET, кастомизировать я не смог.
В моем решении я использую практически такой же подход, который Вы описали. Три цифры версии хранятся в XML файле, MSBuild скрипт считывает этот файл, считывает номер ревизии каждого каталога проекта с помощью SvnInfo и проставляет последнюю цифру версии в AssemblyInfo, заменяя при помощи RegExp. Отличие лишь в том, что версия проставляется для каждого проекта в solution и она может быть разной, т.к. ревизии веток каталогов могут отличаться.
Применять GlobalAssemblyInfo.cs мне кажется не совсем корректным, т.к. это, имхо, нарушает суть версионинга, т.к в этом случае в дистрибутиве мы получаем набор assembly с одинаковыми версиями. Хотя это и не очень критично.
Я упомянул в посте у том, что я использую автоматическую сборку при помощи MSBuild проекта (небольшой XML файл) и версии в AssemblyInfo заменяются при помощи регулярных выражений. А о существовании SubWCRev действительно ничего не знал, спасибо Вам, ознакомлюсь, возможно я действительно изобретаю колесо.
Обсуждаемая проблема уже не раз обсуждалась… Похоже, все так и есть, многим (большинству ?) детей ничего не интересно. Кого винить — о5 же нет однозначного ответа. Но я не думаю, что все уж совсем плохо, дети то ведь рождаются те же самые. Даже если образование кто то «гробит», ребенок ведь все равно личность. Если он чем то всерьез заинтересовался, его уже не остановить.
Я с младших классов в школе учился хорошо, хотя меня никто не принуждал и не бил. Может в этом «виновато» воспитание родителей, в основном мамы, хотя семья у меня была не совсем благополучной. Когда заинтересовался программированием в классе 7, и написал несколько программ на асме, процесс пошел лавинообразно и я уже был уверен, кем хочу стать.
Мне кажется сложно что то сделать было в то время с образованием, чтобы мой интерес к программированию угас (меня вообще никто этому не учил). Понимаю, что довольно плоско судить по себе, но это лишь мое мнение.
Образование само по себе не делает из ребенка личность. Скорее, то, кем он в жизни станет больше определяется врожденными качествами и в какой то мере воспитанием и любовью родителей, данным в младшем возрасте.
программистов, котрые пишут в коде «fuck» и прочую ерунду нужно 314ть. Весело конечно, но никак не в коммерческих проектах. Для себя — пусть пишут на здоровье. я как то случайно встретил в С++ коде в Visual Studio имя переменной написанной на _кириллице_, сделано это было в проекте и сотрудником, которым я руководил и в имени переменной присутствовала ненормативная лексика. Я был в шоке. Не из за того что я так негативно отношусь к мату, иногда на нем не ругаюсь, а разговариваю. Но общение это общение, а программный код — это все таки продукт мышления, творчество, а не сортир, где можно гадить от души.
Действительно классный проект. А вообще, почему бы не пойти дальше? Например, создать интернет сервис, где пользователи смогут размещать реализации алгоритмов численных методов на разных языках программирования. Эти реализации могут конкурировать по скорости работы, размеру используемой памяти и понятности исходников. Постепенно можно прийти к эталонным реализациям, которые невозможно улучшить (хотя, это невозможно;)
рад слышать, Спекки — это все таки шедевр! Спектрум — это была пожалуй целая субкультура, породившая множество талантливых программистов, которые все самые ценные знания получили в детстве именно занимаясь настоящим творчеством на этой простенькой платформе. К примеру ВУЗ мне дал все таки гораздо меньше, чем мой полурабочий Cпектрум:)
В России Спектрумы жили (а может и живут еще?:) до 90-x годов 20 века… Моя первая платформа на которой в детстве учился программировать, и пожалуй делал штуки на ZX-ASM + STS гораздо более интересные чем делаю сейчас на С++/C#/PHP… Спасибо за интересный контент:)
По резюме — навряд ли. При собеседовании, пообщавшись хотя бы минут 5-10, задав нужные вопросы, спросив про увлечения, жизненную позицию, принципы, идеалы, видя человека в лицо, манеру говорить, одеваться, выражаться, взгляд — смогу с очень большой долей вероятности. По крайней мере, даже если «предательство» случиться — это проблема больше не моя, а как раз этого самого сотрудника.
Действительно это все паранойя… Насколько нужно быть неуверенным в себе и в своей компании, чтобы так проверять сотрудников. Бред все это, проблема увода клиентов на мой взгляд может существовать только в маленькой и малоперспективной компании, которая работает с аутсорсинговыми проектами, руководитель которой вместо того чтобы тратить свое время на развитие бизнеса занимается упомянутой в посте херней. Если руководитель в себе уверен, и грамотно подбирает сотрудников — проблемы увода кадров быть в принципе не может. Имхо, адекватный человек делать этого не будет, ибо это в некотором роде предательство, а неадекватных людей, которым доверять нельзя, брать в штат не стоит.
В .NET/С# я пожалуй могу считать себя любителем, но кое что кодил и кодю:) После прочтения поста сразу же возник вопросы:
1. Если я правильно понял — это лишь экономия нескольких строк кода?
2. Хотелось бы увидеть конкретные примеры, как это сделать без Lazy и с Lazy, почувствовать, увидеть и поосязать разницу:)
Lazy ведь просто «фишка», востребованность которой крайне невелика. А вот механизмы Reflection и LINQ можно пожалуй назвать в некотором роде инновационными, хотя вокруг них маловато движухи среди .NET программистов в интернете на мой взгляд.
.NET framework вообще очень интересно эволюционирует, мне наиболее интересно наблюдать за постепенным слиянием WPF/.NET3.5 и Silverlight:)
Что тут сказать, уверен на 200% что эти советы абсолютно правильны. Естественно подходит не для каждой компании, но для большинства IT компаний это must have. А список вообще можно долго продолжать, хотя, пожалуй самые основные способы в нем есть.
Пожалуй, прочитав все вышесказанное, отрекусь от своего последнего сообщения, хотя и не насовсем:) конечно, непробиваемой защиты нет и не будет, но все же главное — это чтобы пользователям было удобно. Уж они то не должны думать о наших программистских проблемах:)
Коммуникации с сервером Flash клиентов, насколько я могу судить, в большинстве случаев работают по тому же протоколу HTTP. В некоторых случаях, можно реализвать общение с помощью сокетов. Передавать mydomain.com/user_win=true наверное смысла действительно не имеет. Сервер передает загадку клиенту в вид набора байтов. Клиент показывает эту загадку пользователю, (робот тут работать не сможет), в виде интерактивной игрушки (или чего то еще, суть не в том), далее после прохождения результата, отправляем его на сервер по тому же протоколу. Автоматически распознать такое робот не сможет, нужен искусственный интеллект, которого у роботов к счастью нет и наверное не будет:) Само собой, такая защита ломается вручную без проблем, но автоматически обойти ее с нынешними технологиями весьма проблематично.
Капча должна быть дружественной, все таки люди немного лучше чем роботы, и люди не любят ломать моск в поисках глупого ответа на глупый и возможно не имеющий ответа вопрос:)
А вообще идея в посте интересная, capcha не должна быть просто изображением, нужна интерактивность.
Честно говоря, с алгоритмами капчей знаком слабо. Знаю только, что под большинство этих алгоритмы можно поднастроить роботов. У меня, возможно, слегка ламерский вопрос. А почему для капчей не используется Flash? И вообще, тут нужна максимальная динамика и интерактивность, каждый раз что нибудь новое, то, с чем может справиться только человек. В Flash можно к примеру сделать микроигру секунд на 15, которую робот ну никак не пройдет. Даже в серверной генерации изображений можно хорошо пофантазировать, всегда удивляя посетителей новыми интересными загадками.
А вообще, капчи очень часто напрягают, нередко даже мне, человеку вроде, приходится угадывать с нескольких попыток. Несколько лет назад пытался зарегистрироваться в одном из сервисов Google, не прошел капча, раз 5 пробовал — ничего не разобрать, если не сидеть там с полчаса и гадать, что они хотели этим сказать. В итоге про себя послал разработчиков такого алгоритма в далекое эротическое путешествие:) На рапидшаре тема с подсчетом или поиском кошек… это уже издевательство над пользователями.
Но вопрос в том, почему бы не использовать интерактивные Flash капчи? без какой либо хитрой визуальной защиты, чтобы все было понятно. К примеру, капча в виде тетриса. удалил 3 строчки — все ок:) и тебе интересно вспомнить старую игрушку, и роботам совсем непросто играть в тетрис:)
Владимир, еще раз спасибо за инвайт:) Я, автор обсуждаемого проекта, рад присоединиться к хабрасообществу и могу дополнить пост.
Жизнь SilverX началась в апреле этого года и в октябре мы выпустили версию 1.0, которая поддерживает большинство основных возможностей Flash Player за исключением Actionscript. Мы вполне понимаем, что отсутствие поддержки Actionscript значительно сужает круг наших пользователей.
Как уже было сказано выше, полноценная конвертация AS3/AS2 в .NET(C#/VB/Java) + написание фреймворка на .NET который будет из себя эмулировать API FlashPlayer — это достаточно нетривиальная и объемная задача, и на 100% она не решаема. Также мы пока полностью не уверены в целесообразности ее решения, т.к. при таком подходе могут возникнуть серьезные проблемы с производительностью сконвертированного приложения.
В наших ближайших планах разработка плагина для Expression Blend, поддержка кнопок, эффектов Flash Player 10 и простейших комманд Actionscript (Play/Stop/GoToFrame, etc).
Ответить на вопрос, зачем это надо, к сожалению не смогу:) Сейчас рынка такого рода инструментов, насколько я знаю, не существует. Мы надеемся что он все же появится, и мы сможем занять там удобную нишу:) Буду рад ответить на вопросы и услышать конкретные предложения/замечания.
В моем решении я использую практически такой же подход, который Вы описали. Три цифры версии хранятся в XML файле, MSBuild скрипт считывает этот файл, считывает номер ревизии каждого каталога проекта с помощью SvnInfo и проставляет последнюю цифру версии в AssemblyInfo, заменяя при помощи RegExp. Отличие лишь в том, что версия проставляется для каждого проекта в solution и она может быть разной, т.к. ревизии веток каталогов могут отличаться.
Применять GlobalAssemblyInfo.cs мне кажется не совсем корректным, т.к. это, имхо, нарушает суть версионинга, т.к в этом случае в дистрибутиве мы получаем набор assembly с одинаковыми версиями. Хотя это и не очень критично.
Я с младших классов в школе учился хорошо, хотя меня никто не принуждал и не бил. Может в этом «виновато» воспитание родителей, в основном мамы, хотя семья у меня была не совсем благополучной. Когда заинтересовался программированием в классе 7, и написал несколько программ на асме, процесс пошел лавинообразно и я уже был уверен, кем хочу стать.
Мне кажется сложно что то сделать было в то время с образованием, чтобы мой интерес к программированию угас (меня вообще никто этому не учил). Понимаю, что довольно плоско судить по себе, но это лишь мое мнение.
Образование само по себе не делает из ребенка личность. Скорее, то, кем он в жизни станет больше определяется врожденными качествами и в какой то мере воспитанием и любовью родителей, данным в младшем возрасте.
1. Если я правильно понял — это лишь экономия нескольких строк кода?
2. Хотелось бы увидеть конкретные примеры, как это сделать без Lazy и с Lazy, почувствовать, увидеть и поосязать разницу:)
Lazy ведь просто «фишка», востребованность которой крайне невелика. А вот механизмы Reflection и LINQ можно пожалуй назвать в некотором роде инновационными, хотя вокруг них маловато движухи среди .NET программистов в интернете на мой взгляд.
.NET framework вообще очень интересно эволюционирует, мне наиболее интересно наблюдать за постепенным слиянием WPF/.NET3.5 и Silverlight:)
Капча должна быть дружественной, все таки люди немного лучше чем роботы, и люди не любят ломать моск в поисках глупого ответа на глупый и возможно не имеющий ответа вопрос:)
А вообще идея в посте интересная, capcha не должна быть просто изображением, нужна интерактивность.
А вообще, капчи очень часто напрягают, нередко даже мне, человеку вроде, приходится угадывать с нескольких попыток. Несколько лет назад пытался зарегистрироваться в одном из сервисов Google, не прошел капча, раз 5 пробовал — ничего не разобрать, если не сидеть там с полчаса и гадать, что они хотели этим сказать. В итоге про себя послал разработчиков такого алгоритма в далекое эротическое путешествие:) На рапидшаре тема с подсчетом или поиском кошек… это уже издевательство над пользователями.
Но вопрос в том, почему бы не использовать интерактивные Flash капчи? без какой либо хитрой визуальной защиты, чтобы все было понятно. К примеру, капча в виде тетриса. удалил 3 строчки — все ок:) и тебе интересно вспомнить старую игрушку, и роботам совсем непросто играть в тетрис:)
Жизнь SilverX началась в апреле этого года и в октябре мы выпустили версию 1.0, которая поддерживает большинство основных возможностей Flash Player за исключением Actionscript. Мы вполне понимаем, что отсутствие поддержки Actionscript значительно сужает круг наших пользователей.
Как уже было сказано выше, полноценная конвертация AS3/AS2 в .NET(C#/VB/Java) + написание фреймворка на .NET который будет из себя эмулировать API FlashPlayer — это достаточно нетривиальная и объемная задача, и на 100% она не решаема. Также мы пока полностью не уверены в целесообразности ее решения, т.к. при таком подходе могут возникнуть серьезные проблемы с производительностью сконвертированного приложения.
В наших ближайших планах разработка плагина для Expression Blend, поддержка кнопок, эффектов Flash Player 10 и простейших комманд Actionscript (Play/Stop/GoToFrame, etc).
Ответить на вопрос, зачем это надо, к сожалению не смогу:) Сейчас рынка такого рода инструментов, насколько я знаю, не существует. Мы надеемся что он все же появится, и мы сможем занять там удобную нишу:) Буду рад ответить на вопросы и услышать конкретные предложения/замечания.