о трансплантациях

16:41 | 04-12-2013 | HOWTO, Software | No Comments

в силу разных привычек (безопастность, эффективность, надежность, итд) я достаточно часто использую в повседневной жизни RAM drive — скажем, чтобы держать там кэш активных программ. и вот, например, как в Mac OS X это можно применить к Chromium[1]:

#!/usr/bin/env python[2]

# Create RAMDisk for Chromium's cache and extensions' temporary files
# By dsjkvf (2013) dsjkvf@gmail.com

import sys
import os
import shutil

def create():
  # Set the size of the RAMDisk in megabytes
  sizeMBytes = 500
  sizeBytes = str(int(sizeMBytes) * 1953)
  # Create RAMDisk
  os.system(
  'diskutil erasevolume HFS+ \"RAMDisk\" `hdiutil attach -nomount ram://'+sizeBytes+'`')

def initialize():
  # Enlist the directories in question
  dirHDDSSD = ['~/Library/Caches/Chromium/Default/Cache', 
  '~/Library/Caches/Chromium/Default/Media Cache', ...[3]]
  dirRAM = ['/Volumes/RAMDisk/Chromium/Cache','/Volumes/RAMDisk/Chromium/Media Cache', ...]
  #Create RAMDisk directories
  for i in dirRAM:
    try:
      os.makedirs(os.path.expanduser(i))
    except OSError, e:
      pass
  # Symlink RAMDisk directories to corresponding mountpoints on the HDD/SSD
  for (i,j) in zip(dirHDDSSD,dirRAM):
    if os.path.exists(os.path.expanduser(i)):
      if not os.path.islink(os.path.expanduser(i)):
        shutil.rmtree(os.path.expanduser(i))
        os.symlink(os.path.expanduser(j), os.path.expanduser(i))
    else:
      try:
        os.symlink(os.path.expanduser(j), os.path.expanduser(i))
      except OSError, e:
          os.unlink(os.path.expanduser(i))
          os.symlink(os.path.expanduser(j), os.path.expanduser(i))
  # Hide the RAMDisk
  os.system('chflags hidden /Volumes/RAMDisk')

def main():
  if not len(sys.argv) > 1:
    create()
    initialize()
    sys.exit()
  else:
    print 'ATTENTION: No command line parameters are supposed to be used with this script.' 
    print 'ATTENTION: Please, make sure to edit the script first.'
    sys.exit()

main()

а для того, чтобы диск не исчезал бесследно после ухода в standby-режим можно использовать программу SleepWatcher, написав для нее элементарное правило:

#!/bin/sh
if [ ! -d "/Volumes/RAMDisk" ]; then
  /Path/to/the/aforementioned/script
fi

  1. предпочитаю Chromium в силу того, что он не соджержит закрытого кода Google. можно так же посмотреть в сторону SRWare Iron, хоть там все и не так однозначно.  ↩

  2. да, python совершенно бесповоротно очаровал меня исключительнейшей простой и логичностью.  ↩

  3. например, это может быть PNaClTranslationCache, или расположенные в ~/Library/Application Support/Chromium/Default/ каталоги Extension State и Extension Rules. или что-то еще.  ↩

  

Leave a Reply