This notebook is a collection of code snippets and technical "how to" instructions.
Search This Blog
Android: UI: horizontal divider
by: Anonymous
In this recipe we will add a thin gray line divider to our UI
<View
Android: xmlns res-auto
by: Anonymous
You can use "res-auto" URI instead of defining custom packages:
so...
<LinearLayout
<LinearLayout
<com.my_company.xyz.control.MyPanelView
so...
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:my_tag="http://schemas.android.com/apk/res-auto"
instead of...
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:my_tag="http://schemas.android.com/apk/res/com.my_company.xyz"
and then use your tag...
<com.my_company.xyz.control.MyPanelView
android:id="@+id/jdhfkjsd"
style="@style/kjdlksjdhjhk"
android:layout_width="0dp"
android:layout_height="wrap_content"
my_tag:header="@string/kjsdlfkdslkfj"
Java: Random
by: Anonymous
In this example we create a random speed jump by a certain constant.
private Random random = new Random();
private static final double SPEED_M_PER_S = 2.2352; /* 5 MPH */
private static final double MAX_RANDOM_DELTA = 0.13;
double speed = SPEED_M_PER_S
+ Math.min(MAX_RANDOM_DELTA, random.nextDouble())
* (random.nextBoolean() ? -1 : 1);
Java: Unsupported major.minor version 52.0
by: Anonymous
This error basically means that you compiled your Java code with the version higher than that on the target machine you are trying to run it on.
$ java -versionjava version "1.8.0_20-ea"
Java 1.8 == 8 == 52 (go figure why this confusion)
J2SE 8 = 52,
J2SE 7 = 51,
J2SE 6.0 = 50,
J2SE 5.0 = 49,
JDK 1.4 = 48,
JDK 1.3 = 47,
JDK 1.2 = 46,
JDK 1.1 = 45
Solution 1: update Java version on target machine (often impossible)
Solution 2: compile with lower Java version (skip on fancy language features e.g. lambdas)
e.g. using Maven
<build>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version>
<configuration>
<!-- target has java version "1.7.0_60", to be safe we use 1.6 -->
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
e.g. using Java Compiler
javac -target 1.6 HelloWorld.java
Java: Locale p3
by: Anonymous
in this tutorial part we will EXTEND ResourceBundle.Control to make sure Java properly reads our language properties files.
Step:
create public class UTF8Control extends ResourceBundle.Control
Step:
find package java.util public abstract class ResourceBundle
Step:
find public static class Control
Step:
find public ResourceBundle newBundle(String baseName, Locale locale, String format, ClassLoader loader, boolean reload)
Step:
Step:
create public class UTF8Control extends ResourceBundle.Control
Step:
find package java.util public abstract class ResourceBundle
Step:
find public static class Control
Step:
find public ResourceBundle newBundle(String baseName, Locale locale, String format, ClassLoader loader, boolean reload)
Step:
copy this method to your new class
Java: Locale p2
by: Anonymous
In this part we will create a simple utility class that will choose the right Locale
Note:
Note:
- using static method
- we are passing in character country code
- we are returning Locale
- this could grow to 180+ cases
Java: Locale p1
by: Anonymous
In this tutorial we will create JavaFX app that uses selected Locale to pull i18n (Internationalization) text.
Note:
Step : create a new IntelliJ Module
Note:
Note:
Note:
- round buttons
- selected county name
- text in different character set
- money notation depending on selected country
Step : create a new IntelliJ Module
- Module name DisplayLocale
- create packages as shown in the picture below
- find country flags icons about 64x64x
- get some translation texts
Step: Create your translation .profile files
Example Australian English file
morning_greeting=G'day Mate!evening_greeting=G'evening Mate!
Step: Create class DisplayLocaleMain extends Application
- import java.util.*
- import javafx.*
- extends Application -- JavaFX Application
- implements Initializable -- automatic injection of Locale
- main method
- @FXML - annotation
- @override start method
- css/buttons.css
Note:
- @Overrite initialize method
- Currency.getInstance(bundle.getLocale());
- NumberFormat.getCurrencyInstance(bundle.getLocale());
- FXMLLoader fxmlLoader
- ResourceBundle.getBundle("bundles.Language", locale, new UTF8Control());
- fxmlLoader.setResources(languageBundle);
- getResource("views/TranslatedPhrasesPane.fxml");
- Pane pane = (BorderPane) fxmlLoader.load(url.openStream()); stage.getScene().getRoot()).getChildren().get(1); LanguageButtonEvent implements EventHandler
- @Override handle method
- LocaleBuilder.byLanguageCode(button.getId());
see next part
Android: mipmaps instead of drawables
by: Anonymous
I started to use MIP (latin "multum in parvo", or "much in little") maps in Android 4.3 code, but I still have to come up with a good explanation of this optimization technique.
Google says:
It’s best practice to place your app icons in mipmap- folders (not the drawable- folders) because they are used at resolutions different from the device’s current density. For example, an xxxhdpi app icon can be used on the launcher for an xxhdpi device.
in AndroidManifest.xml
<application android:label="@string/app_name" android:icon="@mipmap/ic_launcher">
Google says:
It’s best practice to place your app icons in mipmap- folders (not the drawable- folders) because they are used at resolutions different from the device’s current density. For example, an xxxhdpi app icon can be used on the launcher for an xxhdpi device.
in AndroidManifest.xml
<application android:label="@string/app_name" android:icon="@mipmap/ic_launcher">
instead of
<application android:label="@string/app_name" android:icon="@drawable/ic_launcher">
Go: Hello World
by: Anonymous
Time to learn another language!
https://golang.org/dl/
IntelliJ IDEA had a plugin that is auto-detected when you open a file hello.go
package main
import "fmt"
func main() { fmt.Printf("hello, world\n")}
Java: manually holding execution
by: Anonymous
This snippet comes in handy when you want to hang execution of the command line app until user presses ENTER on the keyboard:
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Waiting for you to press ENTER:");
reader.readLine(); // waiting for user indefinitely until ENTER is pressed
Java: Chicago Public Salary Analyzer
by: AnonymousVisit page and take a look at the data:
https://data.cityofchicago.org/Administration-Finance/Current-Employee-Names-Salaries-and-Position-Title/xzkq-xp2w
Download data as CSV (Commas Separated Values) which is used commonly to import-export spreadsheet type of data.
Create a new IntelliJ IDEA Module:
- Maven project
- GroupID: edu.clcillinois.cit137
- ArtifactId: chi_pub_salary_analyzer
- Module name chi_pub_salary_analyzer
If you see Notification: "Maven projects need to be imported"
Create new Package "data.parser"Create new Interface Parser in which we will outline methods we want to GET our data:
CVSParser
Raspberry Pi: Java 1.8
by: Anonymous
pi@raspberrypi ~ $ java -version
java version "1.7.0_40"
DOWNLOAD:
Linux ARM v6/v7 Hard Float ABI 76.67 MB
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-arm-downloads-2187472.html
COPY OVER TO PI
$ scp ~/Downloads/jdk-8u33-linux-arm-vfp-hflt.gz pi@192.168.1.xxx:
LOG IN TO PI
$ ssh pi@192.168.1.xxx
CHECK THE TRANSFER
pi@raspberrypi ~ $ ls -alt
total 178460
-rw-r----- 1 pi pi 80392759 Feb 6 06:44 jdk-8u33-linux-arm-vfp-hflt.gz
UNPACKAGE
pi@raspberrypi ~ $ sudo tar zxvf jdk-8u33-linux-arm-vfp-hflt.gz -C /opt
jdk1.8.0_33/COPYRIGHT
jdk1.8.0_33/LICENSE
jdk1.8.0_33/README.html
jdk1.8.0_33/THIRDPARTYLICENSEREADME.txt
jdk1.8.0_33/bin/
....
CHECK VERSION
pi@raspberrypi ~ $ /opt/jdk1.8.0_33/bin/java -version
java version "1.8.0_33"
Java(TM) SE Runtime Environment (build 1.8.0_33-b05)
Java HotSpot(TM) Client VM (build 25.33-b05, mixed mode)
Raspberry Pi: WiFi configuration
by: Anonymous
pi@raspberrypi ~ $ sudo cat /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="XX_wireless_network_name_007"
psk="xx_my_password_xx"
proto=RSN
key_mgmt=WPA-PSK
pairwise=TKIP
auth_alg=OPEN
}
Beagle Board on Mac
by: AnonymousGet newest HoRNDIS: USB tethering driver for Mac OS X
HoRNDIS (pronounce: “horrendous”) is a driver for Mac OS X that allows you to use your Android phone's nativeUSB tethering mode to get Internet access.
http://joshuawise.com/horndis
Serial Driver:
http://beagleboard.org/static/Drivers/MacOSX/FTDI/FTDI_Ser.dmg
http://beagleboard.org/static/Drivers/MacOSX/FTDI/FTDI_Ser.dmg
FTDIUSBSerialDriver is an implementation of a serial driver for FTDI USB devices on Mac OS X. It supports FT8U232AM, FT8U245AM, FT232BM, FT245BM, FT2232, FT232R, FT245R, FT2232H, FT4232H, FT232H and FT X Series devices.
http://beagleboard.org/static/Drivers/MacOSX/FTDI/
Cleaning space on Linux board (SD memory)
by: Anonymous
Check available space - none left
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 3.5G 3.3G 0 100% /
List files in a suspicious directory by SIZE:
# ls -alS
Remove biggest offenders
# rm -rf /var/cores/*
# rm -rf /var/log/*
Check space available - 89% utilization
# df -hFilesystem
Size Used Avail Use% Mounted
on/dev/root 3.5G 3.0G 370M 89% /
Cygwin: git
by: Anonymous
On Windows in Cygwin shell git pull was hanging up.
Apparently on Cygwin needs to show a pop-up to ASK for password for fetch / pull / push commands, to enable that you need to execute command:
Apparently on Cygwin needs to show a pop-up to ASK for password for fetch / pull / push commands, to enable that you need to execute command:
git config --global core.askpass "git-gui--askpass"
Linux: restarting remotely
by: Anonymous
Immediate restart of the Linux system.
# shutdown -rF now
Android: ping server
by: Anonymous
When trying to connect from Android device to a given server sometimes you need to test if such connection exists:
1: Try from your computer is server is listening on IP_ADDRESS (192.168.x.xx) and given PORT (5xxx)
$ telnet 192.168.x.xx 5xxx
Trying 192.168.x.xx...
Connected to imx6qsabrelite.
2: From command line see if Android can ping the server:
$ adb shell ping 192.168.x.xx
PING 192.168.x.xx (192.168.x.xx) 56(84) bytes of data.
64 bytes from 192.168.x.xx: icmp_seq=1 ttl=64 time=2.65 ms
Class Repo
by: Anonymous
There is a REPO created for each class:
- create a free account with xp-dev.com, remember the password
- send the create user_name to the instructor ulucas@clcillinois.edu
- the instructor will manually add each student per above request
- mkdir ~/CLC
- cd ~/CLC
- git clone https://xp-dev.com/git/CLC_CIT_137_students_2015_spring cit137
- cd cit137
- mkdir MY_FIRST_LAST_NAME
- mv my_old_project_directory/ ~/CLC/cit137/MY_FIRST_LAST_NAME/
- cd ~CLC/cit137/MY_FIRST_LAST_NAME/
- pwd
- ls -al
- git add --all
- git commit -m "my first commit with files from class #1, #2 and #3"
- git push
Homework: print current working directory and list files
Subscribe to:
Posts (Atom)