Programming and Exciting Things

Map ftp server as local drive in windows 8

Published on 10.02.2014

Попаднах на една много приятна програмка (само конзолен вариант) който се справя успешно с map-ване на ftp сървър към windows 8 машина.
Самата програма използва Dokan FS driver-а който е нещо като windows версия на FUSE.

Повече информация за самото приложение: http://www.ferrobackup.com/ftpuse/

И хубавата част е че това може да се комбинира със robocopy :)

Nginx automatic virtual subdomains

Published on 28.01.2014

От известно време ползвам Digitalocean и за момента съм много доволен от това. Но с хубавите страни на cloud машините идва и една малка подробност, a именно трябва да си настроя всичко сам. Тъй като явно съм мързелив и не ми се редактира конфигурацията на уеб сървъра толкова често използвам този конфигурационен файл за да си "създавам" автоматично виртуални събдомейни

server {
    listen  80;
    server_name "~^(?<sub>.+)\.rawpics\.net$";
   
    if (!-d /projects/rawpics.net/$sub) {
        rewrite . http://rawpics.net/ redirect;
    }
    root /projects/rawpics.net/$sub;
   
    index index.php index.html index.htm;
   
    location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
        expires 1y;
        log_not_found off;
    }
    location / {
        try_files $uri /index.php?$args;
         if (-f $request_filename) {
            break;
        }
        if (-d $request_filename) {
            break;
        }
        rewrite ^(.+)$ /index.php?uri=$1 last;        
    }
    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;        
    }
    location ~ /\.ht {
        deny all;
    }
}

Ако не намери директория просто редирекваме към главния домейн :)
ps: оказа се че повече ми харесва nginx отколкото apache :)

ViewPager in Scroolview

Published on 20.01.2014

Снощи добавях view pager в контейнер от scrollview и тъй като не е много препоръчително да се прави естествено държанието на цялото приложение беше "странно", проблема го реших със следното парченце код:

final ViewPager vp = (ViewPager) findViewById(R.id.top_imageViewPager);
	vp.setPageMargin(-50);
	vp.setHorizontalFadingEdgeEnabled(false);
	vp.setFadingEdgeLength(30);
	adapter = new ImageViewAdapterClubObekt(cnt, snimki_top);
	vp.setAdapter(adapter);
	vp.setOnTouchListener(new View.OnTouchListener() {
	        int dragthreshold = 30;
	        int downX;
	        int downY;
	        @Override
	        public boolean onTouch(View v, MotionEvent event) {
	            ScrollView mScrollView = (ScrollView) findViewById(R.id.scrrol_view_obekt);
	            switch (event.getAction()) {
	            case MotionEvent.ACTION_DOWN:
	                downX = (int) event.getRawX();
	                downY = (int) event.getRawY();
	                break;
	            case MotionEvent.ACTION_MOVE:
	                int distanceX = Math.abs((int) event.getRawX() - downX);
	                int distanceY = Math.abs((int) event.getRawY() - downY);

	                if (distanceY > distanceX && distanceY > dragthreshold) {
	                    vp.getParent().requestDisallowInterceptTouchEvent(false);
	                    mScrollView.getParent().requestDisallowInterceptTouchEvent(true);
	                } else if (distanceX > distanceY && distanceX > dragthreshold) {
	                    vp.getParent().requestDisallowInterceptTouchEvent(true);
	                    mScrollView.getParent().requestDisallowInterceptTouchEvent(false);
	                }
	                break;
	            case MotionEvent.ACTION_UP:
	                mScrollView.getParent().requestDisallowInterceptTouchEvent(false);
	                vp.getParent().requestDisallowInterceptTouchEvent(false);
	                break;
	            }
	            return false;
	        }
	    });
	vp.setOnPageChangeListener(new OnPageChangeListener() {
	    @Override
	    public void onPageScrollStateChanged(int arg0) {
	    }

	    @Override
	    public void onPageScrolled(int arg0, float arg1, int arg2) {
	    }

	    @Override
	    public void onPageSelected(int position) {
		switch (position) {
		case 0:
		    menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
		    break;
		default:
		    menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);
		    break;
		}
	    }
	});
Освен проблема с свайп евентите съм "фикснал" и лявото меню да не се показва при swipe ако елемента не е 0-ев.
За лявото меню ползвам "SlidingMenu"

pCloud and BitCoins

Published on 14.01.2014

От вчера (13 януари 2014) pCloud вече приема плащания и през виртуалната валута Bitcoin
Интересно е дали ще има ползваемост или все още въпросната валута е далеч от реална употреба и е по-скоро спекулативна.

Bittorrent Sync

Published on 06.01.2014

Преди време бях писал за robocopy с помощта на който лесно може да се правят mirrors, полезен е при мигриране от pc на pc. Но от няколко седмици тествам новото приложение на bittorrent а именно Bittorrent sync. Има няколко основи предимства:
- Използване на истински p2p протокол без преминаване през сървър.
- Анонимност
- Сигурност - 256 битова AES криптировка
- Подръжка на почти всички ус-ва и операционни системи. (включително NAS ус-вата)
- Версии на файловете
- Напълно безплатно
- Наличие на API за developers
- Подържа синхронизиране както еднопосочно така и пълно синхронизиране
В интернет има множество статии как това ще сложи край на dropbox и подобните услуги, лично аз не смятам, че този проект се стреми към конкретно тази пазарна ниша.
Повече информация може да се намери на http://bittorrent.com/sync