ялабуми™

Разработчик. Всесторонний.

Archive for the ‘Programming’ Category

JavaScript и replaceall

без комментариев

Как ни странно, но конструкция вида:

var string = "find this and find that".replace("find", "found");

получит на выходе «found this and find that». Но не надо никаких циклов, что бы сделать правильно, достаточно простого регекспа (точнее модификатора ‘g’):

var string = "find this and find that".replace(/find/g, "found");

и в итоге – все нашли – «found this and found that».

Написано Alexander Shvetsov

Октябрь 20, 2009 в 18:32

Опубликовано в JavaScript, Programming

Немного об Objective-C и Cocoa

без комментариев

Так получилось, что хоть я и сторонник технологий Microsoft, последние два-три года я являюсь Mac-пользователем, а последний год – Mac является моим основным рабочим ноутбуком. Для .Net я разрабатываю в виртуальной машине, а Python, Mono, впрочем как и много чего другого – нативно.
Но заинтересовался я и Objective-C, надо же заниматься саморазвитием +) Итак начну по порядку, первым делом я пошел на официальный сайт и вошел в Developer’s Zone, где нашел статью какраз для меня – Introduction to Cocoa, пролистал и, откровенно говоря, объема статьи для понимания мне абсолютно не хватило. В итоге открыл Google, Xcode и начал писать…
Прочтите эту запись до конца »

Написано Alexander Shvetsov

Октябрь 9, 2009 в 21:31

Опубликовано в Cocoa, Objective-C, Programming

ExpandoObject или «Зачем из C# делают динамически типизированный язык?»

без комментариев

Сейчас в Visual C# Highlights последним постом висит «Introducing the Expando Object». Это, наверное, третий или четвертый пост про DLR (Dynamic Language Runtime), но лично для меня самый пугающий.
Посмотрим на пример (кстати, не так давно я описывал «Enumerator в Python»):

dynamic contact = new ExpandoObject();
contact.Name = "Alexander Shvetsov";
contact.Location = "Moscow, Russian Federation";

Прочтите эту запись до конца »

Написано Alexander Shvetsov

Октябрь 6, 2009 в 15:51

Опубликовано в C#, Programming

Уменьшение лога транзакций (Shrink transaction log) в MSSQL

без комментариев

Иногда случается что большие транзакции могут зависнуть (эксепшны, аварийный выход), в таком случае Transaction Log может вырастать до неимоверных размеров – иногда соизмеримыми с объемом данных. Если лог все же не нужен, уменьшить его объем можно простой командой SHRINKFILE:

USE [MyDatabase];
BACKUP LOG [MyDatabase] WITH TRUNCATE_ONLY;
DBCC SHRINKFILE(MyDatabase_Log, 10)
GO

В гугле почему-то очень трудно найти внятный пример использования.

Написано Alexander Shvetsov

Сентябрь 23, 2009 в 17:30

Опубликовано в Programming

Задача на внимательность

без комментариев

Если задача об идентификаторах была скорее на логику, то вот небольшая задача на внимательность.

Как будет работать такая конструкция в C#?

while (value --> 0)
{
    ...
}

Одним словом, что делает такая стрелочка?

Написано Alexander Shvetsov

Сентябрь 1, 2009 в 10:17

Опубликовано в Logic, Programming

Разные модификаторы для get и set в C#

без комментариев

Отнють нетривиальным можно назвать возможность выставлять различные модификаторы доступа для get и set в свойствах. Все очень просто, а между тем и очень полезно.

public string Name
{
    get { return this.name; }
    internal set { this.name = value; }
}

Update: Жаль, нельзя так же определять свойства в интерфейсах.

Написано Alexander Shvetsov

Август 25, 2009 в 10:17

Опубликовано в C#, Programming

Url Routing в ASP.NET

без комментариев

Сейчас достаточно популярен фреймворк ASP.NET MVC. Сам по себе «паттерн» MVC достаточно интересен, но не всегда применим. Конечно же он накладывает множество ограничений и на разработчика, и на приложение. Но ведь иногда можно почерпнуть отдельную часть, без ущерба для кого-либо, в данном случае это механизм URL роутинга, который всемте с .Net 3.5 SP1 вошел во фрэймворк в виде неймспейса System.Web.Routing.
Прочтите эту запись до конца »

Написано Alexander Shvetsov

Август 10, 2009 в 15:27

Опубликовано в C#, Programming

Удобный дебаггинг в C#

без комментариев

Просматривая нэймспейс System.Diagnostics, обнаружил много интересного, но самым интересным показался аттрибут DebuggerStepThroughAttribute. Сегодня же, нашел интересный пост посвященный тому, как применять этот аттрибут к свойствам (очень неочевидно, но логично):

public object MyProperty {
    [DebuggerStepThrough]
    get { return this.myobject; }
}

В результате же на таком вызове мы не будем проваливаться в геттер:

object one = two.MyProperty;

Написано Alexander Shvetsov

Август 6, 2009 в 22:15

Опубликовано в C#, Programming

Ответ на задачу об идентификаторах

с одним комментарием

Самое производительное и ничем не ограниченное решение задачи об идентификаторах:

def Increment( string ):
    for i in range( len( string ) - 1, 0 ):
        if string[i].isdigit():
            val = int( string[i] ) + 1
            if val == 10:
                string[i] = '0'
            else:
                string[i] = str( val )
                break
        else:
            break
    return string

Прочтите эту запись до конца »

Написано Alexander Shvetsov

Август 6, 2009 в 21:15

Опубликовано в Logic, Programming

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

с 4 комментариями

Проводя собеседования я всегда давал одну из самых моих любимых задачек на логику и внимание в программировании. Задача простая:

Имеется идентификатор платежа, например INV03329993892129, нужно придумать как этот идентификатор инкрементировать и описать метод, позволяющий это сделать. Префикс постоянный. Длина идентификатора должна быть неизменна.

Жаль, что первым делом я видел лишь демонстрацию знания регулярных выражений.
Прочтите эту запись до конца »

Написано Alexander Shvetsov

Август 4, 2009 в 22:43

Опубликовано в Logic, Programming