4 Ocak 2012 Çarşamba

Objective-C Singleton

Bunu da bir kenara not etmek lazim.

MySingleton.h:

@interface MySingleton : NSObject {
}
+(MySingleton*)sharedMySingleton;
@end


MySingleton.m:

@implementation MySingleton
static MySingleton* _sharedMySingleton = nil;

+(MySingleton*)sharedMySingleton
{
@synchronized([MySingleton class])
{
if (!_sharedMySingleton) [[self alloc] init];
return _sharedMySingleton;
}
return nil;
}

+(id)alloc
{
@synchronized([MySingleton class])
{
NSAssert(_sharedMySingleton == nil, @"Attempted to allocate a second instance of a singleton.");
_sharedMySingleton = [super alloc];
return _sharedMySingleton;
}
return nil;
}


Kaynak:
http://getsetgames.com/2009/08/30/the-objective-c-singleton/

24 Mayıs 2011 Salı

UIActionSheet, adini unutuyorum senin hep


oyle cok fazla iPhone uygulamasi yazmiyorum, arada bir lazim oluyor, cok kullanilmayinca da isimler unutuluyor. hele bir tanesi var ki, her ihtiyac duydugumda adini hatirlamak icin 40 saat dusunuyorum; kendisi UIActionSheet.

bir daha lazim oldugunda hatirlayabilmek icin not ediyorum buraya.


18 Mayıs 2011 Çarşamba

iphone faydali kutuphaneler

iPhone uygulamalari gelistirirken ayni isi goren bircok alternatifle karsilasiyorum. Bu alternatiflerden yaptigim secimleri bir kenara not etmekte fayda var.

XML parse icin: TBXML
HTTP yardimci metodlari icin: ASIHTTPRequest

Ihtiyac oldukca bu listeyi guncelleyecegim. Simdilik bu kadar.

23 Ekim 2009 Cuma

crossdomain javascript iletisimi

Problem:

A domainindeki bir sayfamız B domainden gelen sayfayı bir iframe içinde görüntülüyor. B domainindeki sayfanın, yüksekliğini algılayıp, iframe yüksekliğini otomatik ayarlamasını istiyoruz. Ancak, A sayfası, B sayfasının yüksekliğine erişmeye çalıştığında 'permission denied' hatası alıyoruz.

Kendi geliştirdiğim çözüm şu şekilde:

Sayfalarımız şunlar:
  • A: http://domain-A/container.htm
  • B: http://domain-B/iframe-content.htm
  • C: http://domain-A/communicator.htm

A sayfasının içinde B var, B'nin içinde de C olacak. A ve C aynı domainden geldikleri için birbirleri ile haberleşebilirler. B sayfası dinamik olarak C'yi içeren bir iframe yazdıracak. C'ye iletmek istediğimiz parametreyi #hash kullanarak aktaracağız. Parametrelerimizi hash üzerinden aktardığımız için communicator.htm dosyasının cache'den kullanabiliriz. (Querystring kullanmış olsaydık her farklı parametre için sunucuya istek gönderilecekti.)

http://domain-A/communicator.htm
[script]
top.document.getElementById('iframe1').style.height = Number(h)+'px';
[/script]


http://domain-A/container.htm
[iframe src="http://domain-B/iframe-content.htm"][/iframe]

http://domain-B/iframe-content.htm
[script type="text/javascript"]
function setTopFrameHeight(a)
{
$('#proxyFrame').html('[iframe style="WIDTH: 0px; DISPLAY: none; HEIGHT: 0px" src="http://domain-A/communicator.htm#'+a+'"][/iframe]');
}
[/script]
...
[button onclick="setTopFrameHeight('400px')"]deneme[/button]
...
[div id="proxyFrame"][/div]

Artık B domainindeki iframe-content.htm sayfasının, A domaininde bulunan kendisini içeren sayfadaki iframe'in yüksekliğini değiştirmek için setTopFrameHeight() fonksiyonunu çağırması yeterli.

Not: Örnek kodlardaki html tag'leri [] şeklinde ifade edilmiştir.

15 Mayıs 2009 Cuma

xslt axis

Zaman zaman lazım oluyor, bir kenarda kayıtlı olmasında fayda var. XSLT'de bir node'dan diğer nodlara erişmeyi sağlayan anahtar kelimeler şunlar:
  • child
  • descendant
  • parent
  • ancestor
  • following-sibling
  • preceding-sibling
  • self
  • following
  • preceding
  • attribute
  • namespace
  • descendant-or-self
  • ancestor-or-self
Bu anahtar kelimelerin herbiri geçerli node'a göre bir yön belirtmeyi sağlar. örneğin $currentNode/parent::node() mevcut node'un parent node'unu verecektir.

17 Aralık 2008 Çarşamba

python round fonksiyonu

python ile çalışırken round fonksiyonu beni bir miktar uğraştırmıştı. bir uygulamam için ortalama puan hesaplamam gerekiyordu. bunun için örneğin round(99/20) gibi bir değerin girdiği fonksiyon 5 yerine, 4 döndürüyordu. yani round fonksiyonu, math.floor gibi davranıyordu.
biraz deneme yanılmadan sonra sorunu fonksiyonu şu şekilde yazarak çözdüm:
round(99/20.0)
buradan çıkan sonuç, 2 integer'la bir bölme işlemi yapıyorsanız sonuç math.floor edilmiş bir integer çıkıyor, dolayısıyla round fonksiyonuna zaten bir integer giriyor. sorunu düzeltmek için bölme işlemindeki elemanlardan birini double olarak tanımlamak gerekiyor.

15 Aralık 2008 Pazartesi

veritabanındaki tüm constraint'leri görüntülemek

bir veritabanındaki primary key, foreign key gibi constaint'leri görüntülemek için aşağıdaki sql sorgusu kullanılabilir.

SELECT OBJECT_NAME(OBJECT_ID) AS NameofConstraint,
SCHEMA_NAME(schema_id) AS SchemaName,
OBJECT_NAME(parent_object_id) AS TableName,
type_desc AS ConstraintType
FROM sys.objects
WHERE type_desc LIKE '%CONSTRAINT'

kaynak: http://blog.sqlauthority.com/2007/09/16/sql-server-2005-list-all-the-constraint-of-database-find-primary-key-and-foreign-key-constraint-in-database/