直入 Console
systemctl set-default multi-user.target
直入 LightDM
systemctl set-default graphical.target
My studies, development and creations on Robotics, iPhone Apps, Andriod Apps,...etc.
systemctl set-default multi-user.target
systemctl set-default graphical.target
//------------------------------------------------------------------------------ // Send Signal from Bluetooth for Android App Test //------------------------------------------------------------------------------ // Platform: Arduino UNO + ITEAD Wireless Bluetooth Shield Module Starter Kit // Written by Pacess HO // Copyright 2016 Pacess Studio. All rights resvered. //------------------------------------------------------------------------------ //------------------------------------------------------------------------------ #include <SoftwareSerial.h> //------------------------------------------------------------------------------ SoftwareSerial mySerial(6, 7); // RX, TX int _bufferIndex = 0; byte _buffer[64]; int _count = 0; int _major = 25; int _minor = 0; char _printBuffer[16]; //------------------------------------------------------------------------------ void setup() { randomSeed(analogRead(0)); // Open serial communications and wait for port to open: Serial.begin(38400); // Wait for serial port to connect. Needed for native USB port only while (!Serial); // Please change to DAT mode on the shield mySerial.begin(9600); _count = 0; _bufferIndex = 0; Serial.println("Signal-BT is ready..."); Serial.println("Copyright 2016 Pacess Studio. All rights resvered."); } //------------------------------------------------------------------------------ void loop() { if (_count++ > 20000) { _count = 0; int value = random(100); if (value < 10) { if (_minor > 0) {_minor--;} else if (_major > 15) { _major--; _minor = 9; } } else if (value < 20) { if (_minor < 9) {_minor++;} else if (_major < 25) { _major++; _minor = 0; } } sprintf(_printBuffer, "%d.%d\r\n", _major, _minor); Serial.write(_printBuffer); mySerial.write(_printBuffer); } if (mySerial.available()) { Serial.write(mySerial.read()); } if (Serial.available()) { byte value = Serial.read(); _buffer[_bufferIndex] = value; _bufferIndex++; if (value == '.') { _buffer[_bufferIndex-1] = '\n'; _buffer[_bufferIndex] = '\n'; for (int i=0; i<=_bufferIndex; i++) { value = _buffer[i]; Serial.write(value); mySerial.write(value); } Serial.write("#"); _bufferIndex = 0; } } }
//------------------------------------------------------------------------------ // Reset Bluetooth Settings //------------------------------------------------------------------------------ // Platform: Arduino UNO + ITEAD Wireless Bluetooth Shield Module Starter Kit // Written by Pacess HO // Copyright 2016 Pacess Studio. All rights resvered. //------------------------------------------------------------------------------ // This program is to reset Bluetooth password to 1234 // 1. Remove shield from Arduino UNO // 2. Power up Arduino UNO // 3. Upload this program to Arduino UNO // 4. Power off Arduino UNO // 5. Set CMD mode on shield // 6. Set D0 for TX pin and D1 for RX pin on shield // 7. Power up Arduino UNO //------------------------------------------------------------------------------ void setup() { // Open serial communications and wait for port to open: Serial.begin(38400); // Wait for serial port to connect. Needed for native USB port only while (!Serial); // Please change to CMD mode, D0 for TX pin and D1 for RX pin Serial.println("AT+PSWD=1234"); Serial.println("AT+NAME=Android-BT"); } //------------------------------------------------------------------------------ void loop() { }
<html> <head> <script> var _pi = 3.141592654; // All distance are in mm var _screenWidthMM = 148; var _screenHeightMM = 196; var _aArmDistanceMM = 143; // a var _bArmDistanceMM = 143; // b var _penAndJointDistanceMM = 42; // c var _baseAndJointDistanceMM = 88; // Z1 var _penAndSurfaceDistanceMM = 40; // Z2 function radians2Degree(radians) { var degrees = radians*(180/_pi); return degrees; } function calculate() { var x = document.getElementById("x").value; var y = document.getElementById("y").value; // X = 0 = Horizontal center x -= (768/2); var gamma = radians2Degree(Math.atan2(x, y)); var verticalDistance = ((y*_screenHeightMM)/1024)-_penAndJointDistanceMM; var penJointAndBaseJointHeightMM = (_baseAndJointDistanceMM-_penAndSurfaceDistanceMM); // L var baseJointAndTouchPointSlopeMM = Math.sqrt(Math.pow(verticalDistance, 2)+Math.pow(penJointAndBaseJointHeightMM, 2)); var aSquare = Math.pow(_aArmDistanceMM, 2); var bSquare = Math.pow(_bArmDistanceMM, 2); var lSquare = Math.pow(baseJointAndTouchPointSlopeMM, 2); var alpha1 = Math.acos((lSquare+aSquare-bSquare)/(2*baseJointAndTouchPointSlopeMM*_aArmDistanceMM)); var alpha2 = Math.acos((_baseAndJointDistanceMM-_penAndSurfaceDistanceMM)/baseJointAndTouchPointSlopeMM); var alpha = radians2Degree(alpha1+alpha2); var beta = radians2Degree(Math.acos((aSquare+bSquare-lSquare)/(2*_aArmDistanceMM*_bArmDistanceMM))); var delta = (alpha+beta)-90; document.getElementById("output").innerHTML = "Vertical distance: "+verticalDistance+" mm"+ "<br>L: "+baseJointAndTouchPointSlopeMM+" mm"+ "<br>Alpha: "+alpha+" degrees"+ "<br>Beta: "+beta+" degrees"+ "<br>Delta: "+delta+" degrees"+ "<br>Gamma: "+gamma+" degrees"; } </script> </head> <body> Please enter a coordinate within 768x1024 <br>X:<input id="x" value="768"> <br>Y:<input id="y" value="1024"> <br><button onclick="calculate();">Calculate</button> <br><div id="output" style="margin-top:10px;"></div> <script>calculate();</script> </body> </html>
<html> <head> <script> function isEmail(email) { var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/; return regex.test(email); } function submitNow() { var email = document.getElementById("email").value; var result = isEmail(email); document.getElementById("output").innerHTML = result; } </script> </head> <body> Please enter a valid email address: <br><input id="email"><button onclick="submitNow();">Check</button> <br><div id="output"></div> </body> </html>打開 HTML 頁面,試過功能正常,進入 Injection 戲肉。在 Chrome Console 內,如圖所示先調用 isEmail("abc@cde.com"); 得出 true 正確結果。之後以 function isEmail(input) {return false;} 把功能取諦,再用相同的 isEmail("abc@cde.com"); 指令執行一次。今次出現 false,意味著 isEmail 功能已被修改。回到 HTML 頁面,輸入正確的電郵格式,點「Check」同樣傳回 false。確認了 isEmail 功能不止在 Console 被改,連實際網頁運作也被調換了。
root@kali:/etc/X11/xorg.conf.d# cat /var/log/Xorg.0.log [ 201.991] X.Org X Server 1.18.3 Release Date: 2016-04-04 [ 201.992] X Protocol Version 11, Revision 0 [ 201.992] Build Operating System: Linux 3.16.0-4-armmp-lpae armv7l Debian [ 201.992] Current Operating System: Linux kali 3.18.5-v7+ #1 SMP PREEMPT Fri Feb 6 23:06:57 CET 2015 armv7l [ 201.993] Kernel command line: dma.dmachans=0x7f35 bcm2708_fb.fbwidth=1824 bcm2708_fb.fbheight=984 bcm2709.boardrev=0xa01041 bcm2709.serial=0x18cd2f9 smsc95xx.macaddr=B8:27:EB:8C:D2:F9 bcm2708_fb.fbswap=1 bcm2709.uart_clock=3000000 bcm2709.disk_led_gpio=47 bcm2709.disk_led_active_low=0 vc_mem.mem_base=0x3dc00000 vc_mem.mem_size=0x3f000000 dwc_otg.fiq_fix_enable=2 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait rootflags=noload net.ifnames=0 [ 202.018] Build Date: 05 April 2016 07:04:24AM [ 202.026] xorg-server 2:1.18.3-1 (http://www.debian.org/support) [ 202.034] Current version of pixman: 0.33.6 [ 202.050] Before reporting problems, check http://wiki.x.org to make sure that you have the latest version. [ 202.050] Markers: (--) probed, (**) from config file, (==) default setting, (++) from command line, (!!) notice, (II) informational, (WW) warning, (EE) error, (NI) not implemented, (??) unknown. [ 202.082] (==) Log file: "/var/log/Xorg.0.log", Time: Wed Apr 20 13:19:10 2016 [ 202.091] (==) Using system config directory "/usr/share/X11/xorg.conf.d" [ 202.093] (==) No Layout section. Using the first Screen section. [ 202.093] (==) No screen section available. Using defaults. [ 202.093] (**) |-->Screen "Default Screen Section" (0) [ 202.093] (**) | |-->Monitor "又花了點時間安裝哪個在淘寶入手的 LCD 顯示屏到 Raspberry Pi 上。今次是 Kali Linux。搞了很久都不成功,而且連原本能進的 startx 也失效。網上找的解答都不適用,最後出動撒手間:「rm /usr/share/X11/xorg.conf.d/99-fbturbo.conf」及「rm /etc/X11/xorg.conf.d/99-calibration.conf」使 startx 回復正常。因為這兩個檔案分別是 LCD 顯示屏及觸摸屏的設定。" [ 202.094] (==) No device specified for screen "Default Screen Section". Using the first device section listed. [ 202.094] (**) | |-->Device "Allwinner A10/A13 FBDEV" [ 202.094] (==) No monitor specified for screen "Default Screen Section". Using a default monitor configuration. [ 202.094] (==) Automatically adding devices [ 202.095] (==) Automatically enabling devices [ 202.095] (==) Automatically adding GPU devices [ 202.095] (==) Max clients allowed: 256, resource mask: 0x1fffff [ 202.095] (WW) The directory "/usr/share/fonts/X11/cyrillic" does not exist. [ 202.095] Entry deleted from font path. [ 202.095] (==) FontPath set to: /usr/share/fonts/X11/misc, /usr/share/fonts/X11/100dpi/:unscaled, /usr/share/fonts/X11/75dpi/:unscaled, /usr/share/fonts/X11/Type1, /usr/share/fonts/X11/100dpi, /usr/share/fonts/X11/75dpi, built-ins [ 202.095] (==) ModulePath set to "/usr/lib/xorg/modules" [ 202.095] (II) The server relies on udev to provide the list of input devices. If no devices become available, reconfigure udev or disable AutoAddDevices. [ 202.095] (II) Loader magic: 0x76fc1f68 [ 202.095] (II) Module ABI versions: [ 202.095] X.Org ANSI C Emulation: 0.4 [ 202.095] X.Org Video Driver: 20.0 [ 202.095] X.Org XInput driver : 22.1 [ 202.096] X.Org Server Extension : 9.0 [ 202.102] (++) using VT number 1 [ 202.115] (II) systemd-logind: took control of session /org/freedesktop/login1/session/c1 [ 202.115] (II) no primary bus or device found [ 202.116] (II) LoadModule: "glx" [ 202.117] (II) Loading /usr/lib/xorg/modules/extensions/libglx.so [ 202.141] (II) Module glx: vendor="X.Org Foundation" [ 202.141] compiled for 1.18.3, module version = 1.0.0 [ 202.142] ABI class: X.Org Server Extension, version 9.0 [ 202.142] (==) AIGLX enabled [ 202.142] (II) LoadModule: "fbturbo" [ 202.143] (WW) Warning, couldn't open module fbturbo [ 202.143] (II) UnloadModule: "fbturbo" [ 202.143] (II) Unloading fbturbo [ 202.143] (EE) Failed to load module "fbturbo" (module does not exist, 0) [ 202.143] (EE) No drivers available. [ 202.143] (EE) Fatal server error: [ 202.143] (EE) no screens found(EE) [ 202.144] (EE) Please consult the The X.Org Foundation support at http://wiki.x.org for help. [ 202.144] (EE) Please also check the log file at "/var/log/Xorg.0.log" for additional information. [ 202.144] (EE) [ 202.168] (EE) Server terminated with error (1). Closing log file.
mkdir /rpi-boot mount /dev/mmcblk0p1 /rpi-boot/ nano /rpi-boot/config.txt輸入以下內容:
dtoverlay=sdio,poll_once=on後按 Ctrl-X 儲存及離開。
nano /boot/cmdline.txt刪除「console=ttyAMA0,115200」內容
umount /rpi-boot/ reboot最後,按照平常設定 WiFi 的方法處理就可以了。
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(160, 20, 100, 100)]; [self.view addSubview:imageView]; PHFetchResult *assetCollection = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeSmartAlbumUserLibrary options:nil]; [assetCollection enumerateObjectsUsingBlock:^(PHAssetCollection *smartFolderAssetCollection, NSUInteger index, BOOL *stop) { PHLog(@"smartFolderAssetCollection: %@", smartFolderAssetCollection); PHFetchResult *result = [PHAsset fetchAssetsInAssetCollection:smartFolderAssetCollection options:nil]; [result enumerateObjectsUsingBlock:^(PHAsset *asset, NSUInteger index, BOOL *stop) { PHLog(@"asset: %@", asset); }]; PHAsset *asset = [result lastObject]; [[PHImageManager defaultManager] requestImageForAsset:asset targetSize:CGSizeMake(100, 100) contentMode:PHImageContentModeAspectFit options:nil resultHandler:^(UIImage *result, NSDictionary *info) { [imageView setImage:result]; }]; }];
<?php //======================================================================================== // ZIP File Cleaner //---------------------------------------------------------------------------------------- // Written by Pacess HO // Copyright 2016 Pacess Studio. All rights reserved. //======================================================================================== // This application will looking for ZIP file in specified path, check if file // have been created more than 1 month. If yes then remove it. //---------------------------------------------------------------------------------------- function getDirectoryArray($directory) { $resultArray = array(); $fileArray = scandir($directory); foreach ($fileArray as $key => $value) { // Skip . & .. if (in_array($value, array(".", ".."))) {continue;} $filePath = $value; if (is_dir($filePath) == false) {$resultArray[] = $filePath;} } return $resultArray; } //========================================================================================= // Main program $zipFolder = "/home/www/merchandising/file/zip"; $cutOffTimeStamp = intval(date("Ymd", strtotime("-30 days"))); //---------------------------------------------------------------------------------------- $fileCount = 0; $deleteCount = 0; $fileArray = getDirectoryArray($zipFolder); foreach ($fileArray as $key => $filename) { $tail = strtolower(substr($filename, -4)); if ($tail != ".zip") {continue;} $fileCount++; $filePath = $zipFolder.DIRECTORY_SEPARATOR.$filename; $timeStamp = intval(substr($filename, 0, 8)); if ($timeStamp >= $cutOffTimeStamp) { print("Keep [$filePath].\n"); continue; } $deleteCount++; print("Deleting [$filePath]...\n"); unlink($filePath); } print("\nSummary:\n"); print("cutOffTimeStamp=$cutOffTimeStamp\n"); print("fileCount=$fileCount\n"); print("deleteCount=$deleteCount\n\n"); ?>
NSString *string = @"kernel vec4 color(__sample pixel) {"\ @" float var_2 = sqrt(pixel.b);"\ @" float var_6 = 2.5;"\ @" float var_4 = pow(pixel.r, var_6);"\ @" return vec4(var_4, pixel.g, var_2, 1.0);"\ @}"; CIKernel *kernel = [CIKernel kernelWithString:string]; UIImage *image = [UIImage imageNamed:@"sita.jpg"]; CIImage *inputImage = [CIImage imageWithCGImage:image.CGImage]; CIImage *outputImage = [kernel applyWithExtent:inputImage.extent roiCallback:^CGRect(int index, CGRect rect) { return inputImage.extent; } arguments:@[inputImage]]; image = [UIImage imageWithCIImage:outputImage]; UIImageView *imageView = [[UIImageView alloc] initWithImage:image]; [imageView setCenter:self.view.center]; [self.view addSubview:imageView];