Cloud Storage

Uygulamanız App Engine'de barındırılıyorsa kullanıcıların programlarını kaydetmesine, yüklemesine, paylaşmasına ve yayınlamasına olanak tanıyan bir bulut depolama hizmeti mevcuttur.

App Engine'i ayarlama

İlk hedef, kendi Enginely uygulamanızı kopyalayarak App Engine'de çalıştırmaktır.

  1. Python SDK'sını indirip yükleyin.
  2. Google App Engine'e giriş yapın ve bir uygulama oluşturun.
  3. appengine/app.yaml ifadesini düzenleyin ve blockly-demo olan uygulama kimliğini önceki adımda oluşturduğunuz uygulama adıyla değiştirin.
  4. Aşağıdaki dosyaları ve dizinleri appengine/static/ klasörüne kopyalayın (veya geride bırakın):
    • demos/
    • msg/
    • media/
    • *_compressed.js
  5. İsteğe bağlı: Sunucuda blockly_uncompressed.js etiketini kullanmak isterseniz bu dosyayı appengine/static/ dosyasına ve core değerini de appengine/static/ klasörüne kopyalayın.
  6. İsteğe bağlı: Blockly Playground'u çalıştırmak isterseniz 5. adımdaki dosyaların yanı sıra blocks, generators ve tests dizinlerini de kopyalamanız gerekir.
  7. GUI'den Google App Engine Launcher'ı çalıştırın, appengine dizininizi mevcut bir uygulama olarak ekleyin ve "Dağıt" düğmesine basın. Komut satırını kullanmayı tercih ederseniz şu komutu çalıştırın: appcfg.py --oauth2 update appengine/.

Blockly yüklendikten sonra, tarayıcıyı 2. adımda oluşturduğunuz URL'ye yönlendirebilirsiniz. Bulut depolama demosu da dahil olmak üzere demoların bir listesini görürsünüz.

Bulut ile Konuşma

demos/storage/index.html adresindeki depolama demosunun kaynağını inceleyin ve aşağıdaki özelliklere dikkat edin. İlk olarak, cloud storage API'yi yükleyen bir komut dosyası ekleme yöntemi vardır:

<script src="/storage.js"></script>

Bu komut dosyasının, sayfada yalnızca bir Blockly çalışma alanı olduğunu varsayar. Ayrıca, istediğiniz şekilde değiştirmeniz gereken mesaj tanımları da vardır:

BlocklyStorage.HTTPREQUEST_ERROR = 'There was a problem with the request.\n';
BlocklyStorage.LINK_ALERT = 'Share your blocks with this link:\n\n%1';
BlocklyStorage.HASH_ERROR = 'Sorry, "%1" doesn\'t correspond with any saved Blockly file.';
BlocklyStorage.XML_ERROR = 'Could not load your saved file.\n' +
    'Perhaps it was created with a different version of Blockly?';

Bu mesajların diğer dillerdeki çevirileri, json dizininde Blockly Games'de bulunabilir.

Mevcut engellemeleri kaydetmek için BlocklyStorage.link() numaralı telefona tek bir çağrı yapılır:

<button onclick="BlocklyStorage.link()">Save Blocks</button>

Sayfa yüklendiğinde kayıtlı engellemeleri geri yüklemek için Blockly yerleştirildikten sonra URL'nin karmasını içeren BlocklyStorage.retrieveXml yöntemini çağırın:

if ('BlocklyStorage' in window && window.location.hash.length > 1) {
  BlocklyStorage.retrieveXml(window.location.hash.substring(1));
}

Yerel Depolama

storage.js API ayrıca tarayıcının yerel depolama alanına tek bir blok kaydetme seçeneği sunar. Bu, bulut depolama alanı yerine veya bulut depolama alanına ek olarak uygulanabilir (ancak ikinci durumda, aynı anda geri yüklemeye çalışan iki depolama alanı türüne de dikkat edilmelidir).

Yerel depolama alanındaki blokları geri yüklemek için, engelleme işlemi gerçekleştirildikten hemen sonra BlocklyStorage.restoreBlocks ayarını bir zaman aşımı içinde arayın.

setTimeout(BlocklyStorage.restoreBlocks, 0);

Kullanıcı sayfadan ayrıldığında blokları otomatik olarak yerel depolamaya yedeklemek için BlocklyStorage.backupOnUnload yöntemini çağırın. Böylece, sayfanın kaldırma etkinliğinde bir etkinlik işleyici kaydeder.

BlocklyStorage.backupOnUnload();

Örnek

Bulut depolama alanının canlı demosunu burada bulabilirsiniz.