Это двадцать первая статья из серии, посвященной выходу VS 2010 и .NET 4. Сегодняшний пост поведает вам о некоторых приятных улучшениях в юзабилити, которые пришли с отладчиком в VS 2010.
Отладчик VS 2010 содержит тонны отличных возможностей таких, как Intellitrace (он же исторический отладчик), новая возможность параллельной/многопоточной отладки и поддержка дампа отладки, которые заслуженно привлекают внимание, если мы говорим о новой версии.
В сегодняшнем же посте, я начну рассказывать о некоторых небольших, но тем не менее приятных моментов юзабилити во время отладки, которые появились с VS 2010.
Я уже писал про обучение детей программированию на основе Лого. Однако возможен и другой, ещё более “симпатичный” подход – это визуальное программирование, в котором вообще не надо писать текст. Причём визуальное – это не обязательно рисование блок-схем! Например, можно исходить из понятия объекта, который находится в разных состояниях и реагирует на внешние события.
В Майкрософт также задумываются над проблемами обучения детей, в частности, уже писалось про проект Kodu Game Lab. Kodu – это интерактивная среда создания трехмерных игр, доступная одновременно на Xbox 360 и на ПК. Я решил написать о ней подробнее, поскольку начиная с сегодняшнего для любой желающий может скачать и попробовать версию для ПК.
Как то стало интересно что значат разные буковки/цифарки через точку в названиях видеофайлов.
Пост — результаты гугления, обобщения, структуризации и некоторой правки орфографии.
Возможно, кому то пригодится. Я, например, перестал связываться с TC.
Последние несколько недель, я опрашивал разработчиков на факт использования Search Engine Optimization (SEO) Toolkit для увеличения трафика на свои сайты. Я был удивлен тем, что многие люди не знали вообще о существовании данного инструмента или просто никогда не запускали его. Сейчас мы кратко рассмотрим, почему же каждый веб-разработчик должен использовать данный инструмент.
На Хабре уже было несколько статей, рассказывающих об использовании механизма P/Invoke в проектах на C#. В основном, в статьях был сильный уклон в сторону теории и приводились небольшие показательные примеры.
Я же хочу показать более наглядный пример, показывающий возможности неуправляемого кода — мы будем прятать кнопку Пуск и панель задач.
ИМХО, вместо того, чтобы вкручивать собеседникам мозги насчет заумной семантики event’ов и делегатов или же спрашивать когда написание new IEntity() легально, можно задать вопрос попроще – например “приведите пример необычного поведения или использования языка C#”. Вот несколько примеров, которые пришли в голову в качестве возможных ответов.
Использовать компилятор из кода C# достаточно просто. А вот зачем – это другой вопрос :).
Hello World
Напишем первый простой пример. Создаем консольное приложение и напишем следующий код:
using System;<br>using System.CodeDom.Compiler;<br>using System.Collections.Generic;<br>using Microsoft.CSharp;<br><br>namespace ConsoleCompiler<br>{<br> internal class Program<br> {<br> private static void Main(string[] args)<br> {<br> // Source code для компиляции<br> string source =<br> @"<br>namespace Foo<br>{<br> public class Bar<br> {<br> static void Main(string[] args)<br> {<br> Bar.SayHello();<br> }<br><br> public static void SayHello()<br> {<br> System.Console.WriteLine(""Hello World"");<br> }<br> }<br>}<br> ";<br><br> // Настройки компиляции<br> Dictionary<string, string> providerOptions = new Dictionary<string, string><br> {<br> {"CompilerVersion", "v3.5"}<br> };<br> CSharpCodeProvider provider = new CSharpCodeProvider(providerOptions);<br><br> CompilerParameters compilerParams = new CompilerParameters<br> {OutputAssembly = "D:\\Foo.EXE", GenerateExecutable = true};<br><br> // Компиляция<br> CompilerResults results = provider.CompileAssemblyFromSource(compilerParams, source);<br><br> // Выводим информацию об ошибках<br> Console.WriteLine("Number of Errors: {0}", results.Errors.Count);<br> foreach (CompilerError err in results.Errors)<br> {<br> Console.WriteLine("ERROR {0}", err.ErrorText);<br> }<br> }<br> }<br>}<br><br>* This source code was highlighted with Source Code Highlighter.
Запускаем и проверяем:
Первое, на что стоит обратить внимание – это использование двух пространств имен (namespace):
Microsoft.CSharp
System.CodeDom.Compiler
В данных классах и содержится ключ к возможности компиляции. В нашем примере мы указываем что компилировать будем под .NET Framework 3.5, а так же указываем что мы хотим получить на выходе – Foo.exe, с возможностью запуска данного приложения.
Наткнулся тут недавно на одном сайте на способ защиты от ботов без использования каптчи и javascript.
Все очень просто — достаточно добавить скрытое поле с символом кодированным в HTML сущность (например &copy; &#151; и т. д.). Дело в том что браузер найдя такой символ преобразует его перед отправкой в обычный, а робот использующий парсер форм так и отправить закодированным (причем у меня есть свой парсер форм и он сделал бы именно так). При проверки формы достаточно просто посмотреть длину строки в этом поле. Если отправлял человек то она будет равна числу символов в строке, а если нет значительно больше.
Так что такое решение пусть и не обеспечивает серьезной защиты но вполне может применяться в тех случаях если что то более сложное использовать нельзя.
P. S. пример
P. P. S. Оказывается у меня тут в черновиках статья лежит про методы защиты от ботов и их обходы, стоит дописать?
Объявляем результаты конкурса «Технология Intel vPro», в котором сильнейшие IT-умы нашей родины сражались за самое логичное и понятное объяснение принципов работы новой технологии удаленного доступа к оборудованию.
Победителем конкурса стал пользователь @gefix Иван Тиняков из города Новосибирска, которому достаётся главный приз — поездка в Турцию на двоих.
2-е место занял Николай Лупов из Москвы, а 3-е место — Олег Куприянов из Волгограда. Эти победители получат 3-х местные палатки IT Galaxy.
Мы благодарим всех участников за проявленную волю к победе и желаем успехов в наших следующих конкурсах на портале Сообщества Intel IT Galaxy!
Снова напал на интернет с вопросом, у кого взять VPS качественно и за недорого.
Хочется небольшого: 500Mhz CPU, 256Mb RAM, >3Gb HDD, с Ubuntu LTS или Debian и неограниченным (разумно большим) трафиком.
Желательно: Xen, Россия, WM, до 20$, с возможностью расти по ресурсам.
Транспортная задача (классическая) — задача об оптимальном плане перевозок товара со складов в пункты потребления на транспортных средствах.
Для классической транспортной задачи выделяют два типа задач: критерий стоимости (достижение минимума затрат на перевозку) или расстояний и критерий времени (затрачивается минимум времени на перевозку).
Под катом очень-очень много текста, т.к. рассказывается один из вариантов решения данной задачи «в картинках» для тех, кто мало знаком с графами. Листинг прилагается.
После выхода Visual Studio 2010 beta 1 — первым делом нужно разобраться, что же дает нового нам C# 4.0 (так как это мой основной язык программирования — для меня это является важным). Первым делом должен вам порекомендовать примеры C# 4.0, которые можно скачать отсюда (там же есть документ New Features in C# 4.0, которая послужила основой для этого топика). Документацию по .Net Framework 4.0 beta 1 можно посмотреть в MSDN. Дальше будут следовать мой небольшой опыт знакомства с новой версией .NET.
Предлагаю мой вольный перевод вопроса с stackoverflow, который мне показался полезным и сидит в фаворитах. Что-то я взял с MSDN (в основном вырезки из русской редакции), что-то -с блогов.
Все мы, С# разработчики, знаем базовые комманды C#. Я имею ввиду объявления, условия, циклы, операторы и т.д.
Некоторые из нас знают даже про Generics, anonymous types, lambdas, linq,…
Но, каковы реально скрытные возможности и трюки C#, про которые даже фанаты и эксперты не всегда знают?
Обсуждение предыдущей статьи было бурным. Самые ярые любители jQuery, Mootools кричали зачем мол нужен другой велосипед.
В данной статье мы рассмотрим использование техники Fly AJAX. Это одна из нескольких функциональных возможностей, которые не реализованы в ранее указанных больших (и мною уважаемых) фреймворках. Также, в данной статье, мы рассмотрим принципы правильного проектирования и построения сайтов для хорошей индексации с применением AJAX технологии.
Многие видели моё введение в современные технологии высокопроизводительных вычислений и оценки производительности, теперь я продолжу тему более подробным рассказом о технологии CUDA.
Для тех кто не смотрел предыдущие серии: CUDA позволяет писать и запускать на видеокартах nVidia(8xxx и выше) программы написанные на С++ со специальными расширениями. На правильных задачах достигается значительное превосходство по производительности на $ по сравнению с обычными CPU.
Достижимая производительность — 1 трлн и выше операций в секунду на GTX295.
NB: Статья — краткое введение, покрыть все ньюансы программирования под CUDA в одной статье вряд ли возможно :-)
В прошлой статье о беспроводных сетях мы рассмотрели первый этап — сбор информации, или wardriving. Сейчас же, продемонстрируем несколько способов получения несанкционированного доступа к беспроводным сетям, а также рекомендации по защите от них.
Довольно оживленное обсуждение предыдущей стати (http://habrahabr.ru/blogs/programming/47416/) показало, что тема пролога оказалась интересна сообществу.
Чтобы заинтересовать еще более читателя и вместе с тем облегчить ему начало работы с этим языком, я решил написать немного начальных данных о прологе.
Здравствуйте дорогие читатели. В данной статье мы рассмотрим различные потоковые модели, которые реализованы в современных ОС (preemptive, cooperative threads). Также кратко рассмотрим как потоки и средства синхронизации реализованы в Win32 API и Posix Threads. Хотя на Хабре больше популярны скриптовые языки, однако основы — должны знать все ;)