АРХИВ ПО ТЭГУ "ПРОГРАММИРОВАНИЕ"
ДЕКАБРЬ 16, 2012

Hi,

Бытсро, проверили, где баги и как лучше сделать (особенно волнует метод value:, нужно ли там темп вар)? Есть ли в кокоа уже имплементация КАС лока? Пасибо/

interface

 

#import <Foundation/Foundation.h>
  1.  
  2. @interface CASLock : NSObject
  3. {
  4. @private
  5.     NSLock * lock;
  6.     BOOL val;
  7. }
  8.  
  9. + (CASLock *)lockWithValue:(BOOL)bval;
  10. - (id)initWithValue:(BOOL)bval;
  11.  
  12. /// Check (and set) lock value to AA:
  13. /// — if lock value is AA:      return YES and do update lock value.
  14. /// — if lock value is not AA:  return NO and do not update lock value.
  15. ///
  16. /// Example usage:
  17. /// <code>
  18. /// if (![checkAndSetLock:NO]) {
  19. /// return; // lock value is already YES
  20. /// }
  21. /// // do stuff, lock value changed to YES
  22. /// </code>
  23. - (BOOL)checkAndSetLock:(BOOL)expected;
  24. - (void)setLock:(BOOL)newval;
  25. - (BOOL)value;
  26.  
  27. @end

implementation

 

#import «CASLock.h»
  1.  
  2. @implementation CASLock
  3.  
  4. + (CASLock *)lockWithValue:(BOOL)bval
  5. {
  6.     return [[CASLock alloc] initWithValue:bval];
  7. }
  8.  
  9. - (id)initWithValue:(BOOL)bval
  10. {
  11.     self = [super init];
  12.     if (self) {
  13.         lock = [[NSLock alloc] init];
  14.         val = bval;
  15.     }
  16.     return self;
  17. }
  18.  
  19. - (void)dealloc
  20. {
  21.     [lock release];
  22.     [super dealloc];
  23. }
  24.  
  25. - (BOOL)checkAndSetLock:(BOOL)expected
  26. {
  27.     @try {
  28.         [lock lock];
  29.         if (val == expected) {
  30.             val = !expected;
  31.             return YES;
  32.         }
  33.         else {
  34.             return NO;
  35.         }
  36.     }
  37.     @finally {
  38.         [lock unlock];
  39.     }
  40. }
  41.  
  42. - (void)setLock:(BOOL)newval
  43. {
  44.     @try {
  45.         [lock lock];
  46.         val = newval;
  47.     }
  48.     @finally {
  49.         [lock unlock];
  50.     }
  51. }
  52.  
  53. - (BOOL)value
  54. {
  55.     @try {
  56.         [lock lock];
  57.         BOOL tmp = val;
  58.         return tmp;
  59.     }
  60.     @finally {
  61.         [lock unlock];
  62.     }
  63. }

 

СЕНТЯБРЬ 20, 2012

Hi,

Kak dela?

Все вы, наверное, слышали о моих плагинах для Firefox для скачивания музыки и видео вконтакте. Собственно я передал во владение эти плагины позавчера ребятам из Гонконга (плагины для хрома остаются все еще в моем владении).

Так вот, почему они ушли в Китай? В прошлую пятницу я получил забавное письмецо в ночи о покупке моих двух плагинов для фаерфокса какой-то неизвестной мне фирмы из гонконга icon smile Как я firefox плагины продавал %d1%82%d0%b5%d1%85%d0%bd%d0%be%d0%bb%d0%be%d0%b3%d0%b8%d0%b8 В нем представитель фирмы предлагал купить оба за небольшую сумму. По идее сами плагины мне уже давно не интересны, т.к. я использую Chrome уже в течение где-то года, поэтому я незамедлительно согласился, подняв цену в два раза icon smile Как я firefox плагины продавал %d1%82%d0%b5%d1%85%d0%bd%d0%be%d0%bb%d0%be%d0%b3%d0%b8%d0%b8 В итоге сошлись на прибавке 80% от изначального предложения — вобщем-то неплохо, для меня по крайней мере, т.к. поддерживать плагин больше не нужно да и еды теперь можно прикупить icon smile Как я firefox плагины продавал %d1%82%d0%b5%d1%85%d0%bd%d0%be%d0%bb%d0%be%d0%b3%d0%b8%d0%b8

Статистика по плагинам очень неплохая на самом деле, если сложить показатели обоих, то будем иметь такой расклад:

  • Общее число установок более 750,000
  • Ежедневное число скачек в районе 1,500
  • Ежедневных пользователей примерно 55,000
  • 94% пользователей используют Windows (разочарование) icon smile Как я firefox плагины продавал %d1%82%d0%b5%d1%85%d0%bd%d0%be%d0%bb%d0%be%d0%b3%d0%b8%d0%b8
По поводу передачи плагинов — на сайте фаерфокса это крайне неудобно реализовано, точнее ваобще не реализовано, поэтому мне пришлось отдать свой фаерфокс девелопер аккаунт как он есть, сменив пароль, логин и почту, и далее зарегать новый аккаунт по старыми данными, правда при этом фаерфокс сайт сошел с ума и теперь, когда я пытаюсь залогиниться на сайте по этим креденшелам, то получаю страницу о том, что произошла ошибка, которая будет вскоре пофикшена (правда уже прошло 2 дня и она все еще не пофикшена). Ну, подождем еще немного — не горит.
Вобщем, если плагины не будут работать — обращаться теперь не ко мне icon smile Как я firefox плагины продавал %d1%82%d0%b5%d1%85%d0%bd%d0%be%d0%bb%d0%be%d0%b3%d0%b8%d0%b8 а я уже в свою очередь буду стараться поддерживать Chrome плагины.
PS А вот и сами графики со статистикой по плагинами на 13 сентября:
vk music stats last 30 days 987x768 Как я firefox плагины продавал %d1%82%d0%b5%d1%85%d0%bd%d0%be%d0%bb%d0%be%d0%b3%d0%b8%d0%b8
vk video stats last 30 days Как я firefox плагины продавал %d1%82%d0%b5%d1%85%d0%bd%d0%be%d0%bb%d0%be%d0%b3%d0%b8%d0%b8
СЕНТЯБРЬ 12, 2012

Hi,

Just a note (i.e. backup of a script):

#!/bin/bash
  1.  
  2. SRC=trunk
  3. DST=branches/rel1_0
  4. filename=$1
  5.  
  6. #
  7. # Commandl line params parsing
  8. #
  9.  
  10. if [ -z $filename ]; then
  11.         echo "Usage: getdiff.sh "
  12.         exit 1
  13. fi
  14.  
  15. full_path=0
  16. if [ '-f' == $2 ]; then
  17.         full_path=1
  18. fi
  19.  
  20. diff_dirs=0
  21. if [ '-d' == $2 ]; then
  22.         diff_dirs=1
  23. fi
  24.  
  25. #
  26. # Business
  27. #
  28.  
  29. # Get files paths
  30. dst_file_path=""
  31. src_file_path=""
  32. if [ $full_path -eq 1 ]; then
  33.         dst_file_path="$DST/$filename"
  34.         src_file_path="$SRC/$filename"
  35. elif [ $diff_dirs -eq 1 ]; then
  36.         dst_file_path="$DST/$filename"
  37.         src_file_path="$SRC/$filename"
  38. else
  39.         dst_file_path=`find $DST -name "$filename"`
  40.         if [ -z $dst_file_path ]; then
  41.                 echo "Cannot find destination file '$filename' in '$DST' directory"
  42.                 exit 2
  43.         fi
  44.  
  45.         src_file_path=`find $SRC -name "$filename"`
  46.         if [ -z $src_file_path ]; then
  47.                 echo "Cannot find source file '$filename' in '$SRC' directory"
  48.                 exit 3
  49.         fi
  50. fi
  51.  
  52. # do diff
  53. echo "Doing diff"
  54. echo " dst: $dst_file_path"
  55. echo " src: $src_file_path"
  56. diff -r $dst_file_path $src_file_path
МАЙ 17, 2012

Hola,

Como estan ustedes?

Вобщем заметочка на тему как нарисовать свой прогресс бар, используя CoreGraphics, UIKit и кривые безье.

UIKit предоставляет замечательные хелперы для построения кривых безье, например:

UIBezierPath * valRect =
  1.     [UIBezierPath
  2.        bezierPathWithRoundedRect:CGRectMake(0.0, 0.0, width, height)
  3.        byRoundingCorners:UIRectCornerBottomLeft|UIRectCornerTopLeft
  4.        cornerRadii:CGSizeMake(cornerRad, height/2)];

Download Quartz Progress Bar code.

ios code graphics quartz nice custom progress bar Progress Bar using CoreGraphics on iOS5 %d1%82%d0%b5%d1%85%d0%bd%d0%be%d0%bb%d0%be%d0%b3%d0%b8%d0%b8

ФЕВРАЛЬ 23, 2012

Hi,

Just a note.

cell styles 659x768 UITableView cell styles %d1%82%d0%b5%d1%85%d0%bd%d0%be%d0%bb%d0%be%d0%b3%d0%b8%d0%b8

ЯНВАРЬ 23, 2012

Hi,

Наговнякал тут парочку приложений для макоси на досуге.

Easy Rename for Mac OS X.

Easy Ringtones for Mac OS X.

Хорошо у Apple сделан построен процесс публикации приложений в App Store, достаточно строгие правила и тщательные проверки. Это имхо прикольно, т.к. всякие простенькие трояны и прочая нехорошая ерунда врят ли попадет в App Store. На Android Market все гораздо проще: зарегался девелопером и задеплоил, вроде никто ничего и не тестирует, потому там всякие троянчики и появляются последнее время. Хотя сейчас что то может поменялось — давно на андроид маркет ничего не деплоил..

А теперь Реал Мадрид — Атлетико Бильбао! Пока что 2 — 1, начало второго тайма…

Страницы:1...23456...11