반응형
반응형
python으로 android phone에 웹서버 만들기

 

Tutorial : http://code.google.com/p/android-scripting/wiki/Tutorials

 

 

httpd.py

import SimpleHTTPServer
from os import chdir

 

chdir('/sdcard/')

 

SimpleHTTPServer.test()

 

실행하면 아래처럼 로그가 올라온다.

그럼, 폰의 웹브라우저로 접속하면 아래와 같다.

 

 무선 AP에 접속 중이면 같은 망에 있는 다른 디바이스에서도 접근이 가능하도록 고유 IP를 찾아서 보자.

shell로 접속해서 netcfg를 실행하면  "eth0"가 실행중인 것이 지금 실행중인 Lan정보이다.

그 IP를 사용하면 된다.

 

 

 

반응형
반응형

파이썬을 이용한 단어모음파일에서  무작위로 단어 프린트하기

wordlist.txt : 단어모음 text 파일

wordlist.py : 단어장 스크립트 파일

 

Line.3 : getcwd()를 이용하여 알아낸 경로에 'sl4a'가 포함되어 있으면 경로를 지정해 주도록한다.

Line.4 : 파일을 읽는다.

Line.5 : 파일내용을 splitlines(위 이미지는 오타)로 한줄씩 분할한다.

            lambda 함수는 간단한 함수를 한줄로 줄여준다.

Line.8 : 사용자의 입력을 무한반복으로 기다린다.

 

 

 

 

 

 

반응형
반응형

예제 스크립트가 많아지면 파일및 폴더관리가 쉽지 않다.

+ADD 버튼 선택하여 Folder를 생성해서 Shell로 관리하면 된다.

물론 PC와 USB 연결해서 정리하면 훨씬 빠르겠다.

간단 명령어

pwd : 현재 위치를 보여준다.

cd scripts : scripts 폴더로 이동한다.

ls : 디렉토리내의 파일목록을 보여준다.

ls -l 또는 ll : 자세리 파일목록을 보여준다.

mv hello_android.py  scripts : scripts 폴더로 hello_android.py 파일을 이동시킨다.

rm hello_android.py: 파일 삭제

 

사진찍기, 연속 촬영하기

 

import android,time

 

a = android.Android()

 

def pic():

    return 'sdcard/sl4a/scripts/img/'\

         + time.strftime('%Y%m%d%H%M%S')\

         + '.jpg'

 

def say(it):

    a.ttsSpeak(it)

    a.makeToast(it)

 

food = 'Keeeemcheeeee!'

 

for i in range(3):

    for j in range(3,0,-1):

        say(str(j))

        time.sleep(3)

    say(food)

    a.cameraCapturePicture(pic())

 

 

 

 

 

 

 

* sleep 을 위해 time을 import 한다.

* 순차적 파일명 생성을 위해서 time.strftime을 사용한 파일명 구현

 

 

반응형
반응형

안드로이드폰에서 파이썬을 사용하려면 SL4A(Scripting Layer for Android),

 Python for Android를 설치해야 한다.

 

SL4A 설치 : http://code.google.com/p/android-scripting/


QR로 다운 받을 수 있다. : http://android-scripting.googlecode.com/files/sl4a_r6.apk

 

SL4A를 실행하고 Menu > View > Interpreters 를 선택하면 "SHELL"이라는 메뉴가 나타난다.

shell 을 통해서 안드로이드폰과 대화를 할 수 있다.

 

난 "SHELL"이 나오지 않아서 바로 Python for Android를 설치해버렸다.

 

Python for Android 설치 : http://code.google.com/p/android-scripting/downloads/detail?name=PythonForAndroid_r4.apk

File:
Description:
Latest Python release.

Note that Python for Android is now being hosted here:
http://code.google.com/p/python-for-android/

This is a copy of the lastest release, placed here for convenience.
SHA1 Checksum: ff4dfef760880fd1cdbc164045cc859947ecbe1d What's this?

 

설치하면 Install 메뉴가 나오는데, 바로 Install 터치.

몇 번의 다운로드와 설치가 끝나고, Install > UnInstall 로 변경된다.

 

그럼, 다시 SL4A를 실행하면  Script와 Shell이 대기중일 것이다.

스크립트 목록이 나오는데, shell화면으로 가고 싶으면 View > Interpreters 로 이동한다.

 

Interpreters에서 python을 선택하면 파이썬 shell로 들어간다. 안드로이드를 import해서 핸드폰 기능을 테스트 해 볼 수 있다.

 

안드로이드 모듈을 가져온다.

>>>import android

>>>droid = android.Android()

 

>>>droid.vibrate()

: 진동을 실행한다. 그런데, 한번밖에 되지 않는다.

 

>>>droid.ttsSpeak('anneung')

: '안녕'이라고 스피커에서 나온다.

 

>>>def ann(): droid.ttsSpeak('anneung')

>>>ann()

>>>ann()

 

 

 

 

 

 

 

 

 

 

스크립트 파일을 추가해서 파일을 실행 해 볼 수 있다.

파일을 생성하고, MENU > Save & Run을 선택하면 저장하면서 실행이 된다.

반응형
반응형

jquery와 angulars 같이 사용하기.

requireJS로 시작했다가 무거운거 같아서 그냥 같이 쓰는걸로 해봤다.

문법적인 문제는 발견되지 않았다. 너무 간단한 테스트라서 그럴지도.

 

AS-IS

 : index.html에 require.js와 main.js, angular.js, controllers.js 등을 녹여넣었다.

* index.html

<!doctype html>
<html lang="en" ng-app>
    <head>
        <title>jQuery+RequireJS Sample Page</title>
        <!-- This is a special version of jQuery with RequireJS built-in -->
        <script data-main="scripts/main" src="scripts/require-jquery.js"></script>
               </script>
    </head>
    <body ng-controller="PhoneListCtrl" >
        <h1>jQuery+RequireJS Sample Page</h1>
        <p>Look at source or inspect the DOM to see how it works.</p>
       
       
       
        <div id="mydiv">aaa</div>
        <p>Total number of phones: {{phones.length}} </p>
        <p>Angulars Templates - http://docs.angularjs.org/tutorial/step_02</p>

 <p>Nothing here {{'yet' + '!'}}</p>
 
 <p>1 + 2 = {{ 1 + 2 }}</p>
 
 <p class="hello">{{hello}}______</p>
    </body>
</html> 

* main.js - require.js에서 사용함. 

 require(["jquery"], function($) {
  $("#mydiv").html("Hello this is RequireJS talking");
});


require(["jquery", "jquery.alpha", "jquery.beta"], function($) {
    //the jquery.alpha.js and jquery.beta.js plugins have been loaded.
    $(function() {
        $('body').alpha().beta();
    });
});

// angular.JS, controllers.js 를 LOAD.
require(["angular"], function($) {

});
require(["controllers"], function($) {

});

* controllers.js - angular.js에서 사용 

 function PhoneListCtrl($scope) {
  $scope.phones = [
    {"name": "Nexus S",
     "snippet": "Fast just got faster with Nexus S.",
     "age": 0},
    {"name": "Motorola XOOM™ with Wi-Fi",
     "snippet": "The Next, Next Generation tablet.",
     "age": 1},
    {"name": "MOTOROLA XOOM™",
     "snippet": "The Next, Next Generation tablet.",
     "age": 2}
  ];
 
  $scope.orderProp = "age";  
  $scope.hello = "Hello, world!"; 
}

 

TO-BE

* index.html 에 다 순차적으로 호출하였다.(require.js 사용안함) 

 <!doctype html>
<html lang="en" ng-app>
    <head>
        <title>jQuery+RequireJS Sample Page</title>
        <!-- This is a special version of jQuery with RequireJS built-in -->
        <script src="scripts/angular.js" ></script>
      <script src="scripts/controllers.js"></script>
      <script src="scripts/jquery-1.5.2.min.js"></script>
      <script src="scripts/jquery.alpha.js" ></script>
      <script src="scripts/jquery.beta.js" ></script>
        <script>        
         $(document).ready(function(){
             $("#mydiv").html("Hello this is RequireJS talking");
             $('body').alpha().beta();
         });
   
        </script>
    </head>
    <body ng-controller="PhoneListCtrl" >
        <h1>jQuery+RequireJS Sample Page</h1>
        <p>Look at source or inspect the DOM to see how it works.</p>
       
       
       
        <div id="mydiv">aaa</div>
        <p>Total number of phones: {{phones.length}} </p>
        <p>Angulars Templates - http://docs.angularjs.org/tutorial/step_02</p>

 <p>Nothing here {{'yet' + '!'}}</p>
 
 <p>1 + 2 = {{ 1 + 2 }}</p>
 
 <p class="hello">{{hello}}______</p>
    </body>
</html>

 

 

 

 

 

 

반응형
반응형

 

RequireJS is a JavaScript file and module loader. It is optimized for in-browser use, but it can be used in other JavaScript environments, like Rhino and Node. Using a modular script loader like RequireJS will improve the speed and quality of your code.

 

http://requirejs.org/

 

 

프로젝트에 require.js와 main.js 파일이 필요하다.

아래에서 main.js를 호출하는 구문이다.

<script src="require.js" data-main="main"></script>

main.js( data-main="main" )에 로드할 JSLibrary와 해당 JSLabrary의 구문을 입력하면 된다.

아래에는 "jquery.js" 가 있어야 실행이 된다.

require(["jquery"], function($) {
  $(‘#mydiv”).html(‘Hello this is RequireJS talking”);
});

 

** Optimize your JavaScript with RequireJS

http://www.webdesignerdepot.com/2013/02/optimize-your-javascript-with-requirejs/

 

 

IE 6+ .......... compatible ✔
Firefox 2+ ..... compatible ✔
Safari 3.2+ .... compatible ✔
Chrome 3+ ...... compatible ✔
Opera 10+ ...... compatible ✔

Get started then check out the API.

 

require.js 2.1.4MinifiedWith Comments

All you need to start using require.js in the browser.

Sample RequireJS 2.1.4 + jQuery 1.9.1 projectDownload

A zip file containing a sample project that uses jQuery and RequireJS.

r.js: Optimizer and Node and Rhino adapterDownload

The r.js file allows you to run the optimizer as well as run modules in Node or Rhino.

If you are running in Node, and want to use npm to install this file via npm, see the Use with Node page for more information.

For information on its use, as well as how to get the JAR files to run it under Rhino, see the r.js README.

Plugins§ 2

These are useful loader plugins that have the same license terms as require.js itself. Download the plugin file and place it as a sibling to your "data-main" main.js script.

textDownload

Load text files and treat them as dependencies. Great for loading templates. The text strings can be inlined in an optimized build when the optimizer is used.

domReadyDownload

Wait for the DOM is ready. Useful for pausing execution of top level application logic until the DOM is ready for querying/modification.

cs (CoffeeScript)Download

Load files written in CoffeeScript. With this plugin, it is easy to code in CoffeeScript in the browser, it can participate in the optimizer optimizations, and it works in Node and Rhino via the RequireJS adapter. This is the best way to do cross-environment, modular CoffeeScript. The project home has more information on how to install and use it.

i18nDownload

Load string bundles used in internationalization (i18n) that are made up of separate country/language/locale-specific bundles.

반응형

+ Recent posts