DevProg: Блог для программистов

Секреты программирования. Примеры разработки. Обзоры программёрского софта, блогов и форумов и просто полезные советы!

Archive for Октябрь 2008

Регулярные выражения для новичков!

Posted by devprog на Октябрь 28, 2008

Блог для программистов собрал для вас хорошие материалы по использованию регулярных выражений. Это статьи Сергея Колесниченко. Очень качественные и удобные, особенно для новичков. Так же могут быть использованы как отличный справочник, если нужно быстренько что то вспомнить и освежить в памяти, без особых временных затрат.

Статьи:

Регулярные выражения, Часть I

Регулярные выражения, Часть II

Сайты:

PCRE.RU – Регулярные выражения совместимые с Perl.

REGEXP.RUРегулярные выражения

RSDN.RUРегулярные выражения в Delphi

PEREPLET.RU Регулярные выражения в PERL

Сервисы проверки регулярных выражений:

www.regexlib.com

www.regexp.ru

www.regexpal.com

www.rexv.org

Программы для работы с регулярными выражениями:

RegexBuddyОтличная программа для работы с регулярными выражениями.

 

Posted in Программирование, Сервисы, Хитрости | 3 комментария »

ExeScript — компилятор VBS, BAT, JS, WSF и WSH скриптов

Posted by devprog на Октябрь 26, 2008

Довольно интересная разработка. Это компилятор, способный VBS, BAT, JS, WSF и WSH скрипты преобразовать в исполняемый EXE модуль. Проект достаточно удобный и простой. Может быть использован и для защиты ваших скриптов. Словом всё очень даже хорошо. Так же есть подсветка кода. Можно даже на новую программу навесить защиту вроде пароля.

 


Размер
: 2.08 Mb
Условия
: ShareWare

 

Tags:

Posted in Сервисы | 9 комментариев »

6 важных советов начинающим программистам

Posted by devprog на Октябрь 26, 2008

Совет 1: Не пасуйте перед трудностями
Трудности будут подстерегать вас на каждом шагу, но это не повод всё бросить правда?! Ищите решение на форумах, спрашивайте на блоге и в конце концов попытайтесь найти решение проблемы сами — это самый лучший вариант из всех, так как вы не просто повторили тупняком чьи-то слова — вы сами, путём долгих попыток всё таки нашли выход из ситуации.

Совет 2: Проверяйте свой код сразу
Может показаться «дебильным советом», но многие люди делают ошибки не в алгоритмах — а именно в коде, да ещё например в самом начале листинга. Просто одна ошибка может быть вызвана из за другой и порой очень трудно отследить родительскую (самую главную) ошибку в коде.

Совет 3: Структурируйте свой код
Всегда старайтесь сделать так, чтобы ваш код смогли прочитать не только вы, но и другие люди. И кстати не просто прочитать а понять его! Делайте так, чтобы ваш код был красивым, в самом прямом смысле этого слова.

Пример плохого кода:

if (!a1) { echo («a1 is false»); }

Удобный код:


if (!a1)

{
      echo «a1 is false»;
}

Думаю смысл ясен?!

Совет 4: Комментируйте свой код
Важнейшее правило в программировании! Люди которые просматривают ваш код, порой не сразу понимаю что например вот здесь, вы разбираете файл на 3 отдельных файла и в каждом заменяете слово «Ура» на слово «Победа».

Совет 5: Если ван надоел ваш проект — отдохните!
Например вы сидите и пишите какую-нибудь программу и тут она вам уже не нравиться и вы решаете её стереть/бросить и т.д. Не в коем случаи не нужно этого делать. Просто закройте окно редактора и поиграйте например в игрушку — проще говоря отдохните. Или вот ещё момент: вы программируете, но застряли на каком-то куске кода. Вы бьётесь как рыба об лёд, но решение в голову не приходит? Отдохните, расслабьтесь но не бросайте дело на пол дороги — это ужасная привычка!

Совет 6: Придерживайтесь собственного стиля!
То есть, пишите свои программы одним «почерком» не меняя стиль написания от модуля к модулю или от программы к программе! Поверьте — это очень полезный совет!

А каких правил в программировании придерживаетесь вы? Комментируйте, ваше мнение очень важно!

Posted in Новичку, С и С++, Хитрости | 7 комментариев »

Ассемблеры для Linux: Сравнение GAS и NASM

Posted by devprog на Октябрь 24, 2008

Сегодня, уже собираясь ложиться спать и видеть хорошие, добрые сны, наткнулся (совершенно случайно) на очень интересную статью. В чём отличия ассемблеров GAS и NASM? Вот вы знаете? И я не знаю. Так давайте прочитаем!!!

Вырезка из статьи:

В этой статье объясняются некоторые наиболее важные синтаксические и семантические различия двух самых популярных ассемблеров для Linux® — GNU Assembler (GAS) и Netwide Assembler (NASM), а также различия в базовом синтаксисе, переменных и доступе к памяти, обработке макросов, функциях и внешних подпрограммах, работе со стеком и методиках простого повторения блоков кода.

В этой статье описываются:

  • Основные синтаксические различия NASM и GAS
  • Общие конструкции на уровне ассемблера, такие как переменные, циклы, метки и макросы
  • Немного о вызове внешних подпрограмм на C и использовании функций
  • Использование и различия мнемоник ассемблера
  • Методы адресации памяти

В этой статье не рассматриваются:

  • Различные виды макросов и компоненты, специфичные для того или иного ассемблера
  • Директивы ассемблера, характерные только для NASM либо GAS
  • Возможности, не являющиеся широко употребительными, или имеющиеся в одном ассемблере и отсутствующие в другом

Ну что-ж, не буду вас томить, читайте на здоровье: Ассемблеры для Linux: Сравнение GAS и NASM

Posted in Ассемблер | 1 Comment »

Монетизация блога в Блогуне

Posted by devprog на Октябрь 24, 2008

программирование для новичковРешил, что монетизация блога не помешает. Буду писать постовые и небольшие рекламные обзоры только на релевантные этому блогу темы, то есть на тему программирования, библиотек итд.

Для этого зарегистрировался в блогуне. Как пойдут дела с ним (всмысле монетизации) читайте в моём SEO-Блоге.

Кстати, если кому нужна недорогая реклама (нужной библиотеки, разработки, фреймворка итд) в этом блоге – добро пожаловать в icq 982401, обсудим. К примеру постовой на этом блоге стоит всего 30 руб. (1 WMZ).

Posted in Uncategorized | 1 Comment »

Ассемблер для начинающих. Урок 2 — Циклы и условные переходы

Posted by devprog на Октябрь 21, 2008

ассемблер для новичковПривет. Сегодня поговорим о циклах и условных переходах. Для этого давайте возьмём код из первого урока и немного его усложним, добавив сначала цикл, затем условный переход. Давайте сделаем так чтобы окошко вызывалось 5 раз. Для этого приведём следующий код:

include ‘D:\FASM\include\win32ax.inc’

.code

start:

mov esi,5d    ; кладём в регистр esi число 5

@@loop:   ; обьявили метку

invoke MessageBox,0,0,0,0 ; вызываем окно

dec esi   ; уменьшаем счётчик

cmp esi,0  ; сравниваем esi c нулём (проверяем не кончился ли счётчик)

ja @@loop        ; и если число в esi превышает 0 (нуль) то прыгаем на метку @@loop

invoke  ExitProcess,0 ; ну а если равно то выходим из программы

.end start

Тут наверное стоит пояснить что метка @@loop — так написанна для удобства и только для этого. Есть ещё понятие анонимных меток — о них мы поговорим в следующих уроках. Итак из комментариев в коде я думаю всё ясно. Мы просто обьявили регистр esi как счётчик, затем мы вызываем окошко и уменьшаем счётчик на 1 (dec — уменьшить на 1). Сравниваем счётчик с нулём, так мы проверяем, не кончился ли счётчик, и если не кончился — переходим на метку @@loop. Поясню, что JA — Jump if Above то есть переход если больше. Так и получаеться что пока в esi больше нуля то мы «бегаем по коду» и выполняем вызов окна. Как только счётчик установлен в 0 (нуль) — выполнение программы прекращаеться, то есть выполняеться ExitProcess.

Кстати в этой программе мы использовали и цикл и условный переход. Но давайте превратим этот код в более привычный вид для программистов на C++ и Delphi:

include ‘D:\FASM\include\win32ax.inc’

.code

start:

mov esi,5d

@@loop:

invoke MessageBox,0,0,0,0

dec esi

.if esi = 0

invoke  ExitProcess,0

.endif

jmp @@loop

.end start

Тут уже попонятнее да? Появился привычный нам всем if. Как вы уже знаете после if выполняеться код если условие верно. То есть если у нас esi = 0, то выполняеться ExitProcess. Тут всё понятно и так. Если не понятно — всегда рад ответить на ваши вопросы.

И вот только сейчас я вспомнил что я обещал на прошлом уроке показать как использовать переменные среды. Но я не буду этого делать. А почему? Да потому что я нашёл видео по этому делу:

http://sulaiman.netadvant.com/video/fasm-05.rar . Но для его просмотра нужно скачать кодек: http://sulaiman.netadvant.com/video/….0.0-13124.exe

Posted in Ассемблер, Новичку | 7 комментариев »

Ассемблер для начинающих. Урок 1 — Вызов API функций.

Posted by devprog на Октябрь 17, 2008

Привет. Итак приступим к делу, для этого нам нужно скачать какой-нибудь компилятор ассемблера, качайте или FASM или MASM, так как отличия в синтаксисе минимальны. Выбрать компилятор по душе можете вот сдесь. Лучше конечно скачать FASM, так как этот компилятор нравиться мне больше остальных и обьяснять я буду именно на нём.

Итак, давайте напишем приложение которое будет показывать простое окошко с какой-либо фразой, как и подобает обучаться програмированию. Вообще я сомневаюсь что имеено так нужно учиться но не будем нарушать традиций.

Создадим простой текстовый файлик и назовём его «first.asm» и начинаем программировать:

include ‘win32ax.inc’
.code
start:
invoke  ExitProcess,0       ; вызываем функцию ExitProcess c параметром 0 (нуль)
.end start

Что делает этот код? Да ничего… Если мы его скомпилируем то получим полноценную программу которая просто завершает сама себя. Компилируем:

fasm.exe first.asm

Итак, вы попытались скомпилировать… Но не получилось, а всё потому что компилятор не знает где находиться файл-инклудник — «win32ax.inc». Необходимо ему явно указать этот файл для этого меняем код программы, например вот так:

include ‘D:\FASM\include\win32ax.inc’
.code
start:
invoke  ExitProcess,0       ; вызываем функцию ExitProcess c параметром 0 (нуль)
.end start

Теперь всё скомпилируеться отлично, но чтобы это не писать каждый раз, можно задействовать переменные среды, присвоив например переменной %inc% путь «D:\FASM\include». Но этим мы займемся в следующем туториале, так как в этом я собираюсь показать как вызываеться функция Windows API (какой и являеться ExitProcess).

Кстати invoke — это макрос, который обьявлен в инклуднике win32ax.inc. Он позволяет нам вызывать функции привычным образом как например в С++ или Delphi. Без него мы будем писать в следующих туториалах. Короче усвойте что invoke это вызов функций (но только на первый туториал, ну или на все если в будущем вы собираетесь программировать именно с его помощью).

Теперь давайте добавим в нашу программу ещё одну функцию — MessageBox:

include ‘D:\FASM\include\win32ax.inc’
.code
start:
invoke  MessageBox,HWND_DESKTOP,»Hallo Xaker.Name»,»Caption»,MB_ICONASTERISK
invoke  ExitProcess,0       ; вызываем функцию ExitProcess c параметром 0 (нуль)
.end start

Первый параметр функции MessageBox являеться дескриптор окна-родителя нашего окошка, в качестве него мы передаём константу HWND_DESKTOP — дескриптор Рабочего Стола.

Второй параметр — адрес на текст самого окошка. Возникает вопрос — почему же мы не пишем: invoke MessageBox,HWND_DESKTOP,offset Message….? Да потому что, макрос invoke достаточно универсален, чтобы принимать в параметре просто текст… Подробнее обьясню в следующих уроках.

Третий параметр — заголовок окна, то есть его адрес.
Ну а четвёртый параметр — стиль окна, у нас это MB_ICONASTERISK то есть окошко с восклицанием.

Кстати дополнительную информацию об API — можно получить либо на MSDN либо из любой справки Windows SDK, которая поставляеться с любым продуктом Borland. Вот и написали и разобрали вызов функций и написали полноценное приложение. Всё, до следующего туториала, всего хорошего…

———-
Интересное на блогах:
Сокращаем JavaScript код
Сервисы для программистов

———-
Полезная заметка? Есть способ получать новые посты не заходя на этот сайт! Как? Да просто подпишись на RSS-Фид !

Posted in Ассемблер, Новичку | Отмечено: , , , | 22 комментария »