So lets add many circles together:
Thats ok but what if we add some symmetry.
Lets add symmetry from one axis:
From two axis:
Those examples are random but the point is that have something not random, they have structure.
I like the more complex symmetry from the center point (not the math definition):
continue_
Friday, November 20, 2015
Wednesday, November 18, 2015
Javascript: Canvas circles
So we always start:
and we have the basic:
and for all other shapes we use paths
I use a lot of circles so why not add:
We can do that by adding some functions to the prototype of the c with is the CanvasRenderingContext2D:
done_
var canvas = document.getElementById("canvas"); var c = canvas.getContext("2d");
and we have the basic:
c.fillRect c.fillText c.strokeRect c.strokeText
and for all other shapes we use paths
I use a lot of circles so why not add:
c.fillCircle c.strokeCircle
We can do that by adding some functions to the prototype of the c with is the CanvasRenderingContext2D:
CanvasRenderingContext2D.prototype.fillCircle = function(x, y, r) { this.beginPath(); this.arc(x, y, r, 0, 2 * Math.PI); this.fill(); }; CanvasRenderingContext2D.prototype.strokeCircle = function(x, y, r) { this.beginPath(); this.arc(x, y, r, 0, 2 * Math.PI); this.stroke(); };
done_
Monday, November 16, 2015
HTML: Canvas background
To have a canvas as a html page background we need:
HTML:
CSS:
JavaScript:
Demo 1
done_
HTML:
<body onload="load()"> <canvas id="canvas_back"></canvas> ... </body>
CSS:
#canvas_back { position: fixed; top: 0px; left: 0px; z-index: -1; }
JavaScript:
var c, w, h; function load() { var canvas = document.getElementById("canvas_back"); c = canvas.getContext("2d"); window.addEventListener('resize', resize, false); resize(); } function resize() { w = canvas.width = window.innerWidth; h = canvas.height = window.innerHeight; draw(); } function draw() { // use c, w and h to draw the canvas ... requestAnimationFrame(draw); }
Demo 1
done_
Friday, November 13, 2015
Android: Store values
We can save and load values, permanently, using Shared Preferences.
The shared preferences framework provides an easy way to store values, not only preference related but any kind of values. It's a file based so keep that in mind.
To get the SharedPreferences object we need:
To save a values we:
And to load a values we:
We can also get a single Preferences for each activity with:
Except MODE_PRIVATE we have MODE_WORLD_READABLE and MODE_WORLD_WRITEABLE which are deprecated, so don't use them.
done_
The shared preferences framework provides an easy way to store values, not only preference related but any kind of values. It's a file based so keep that in mind.
To get the SharedPreferences object we need:
private static final String NAME = "..."; public static SharedPreferences getPreferences(Activity a) { return a.getSharedPreferences(NAME , Context.MODE_PRIVATE); }
To save a values we:
public static void save(Activity a) { SharedPreferences.Editor sp = getPreferences(a).edit(); sp.putString("name1", value1); sp.putInt("name2", value2); sp.commit(); }
And to load a values we:
public static void load(Activity a) { SharedPreferences sp = getPreferences(a); value1 = sp.getString("name1", default1); value2 = sp.getInt("name2", default2); }
We can also get a single Preferences for each activity with:
getPreferences(Context.MODE_PRIVATE)
Except MODE_PRIVATE we have MODE_WORLD_READABLE and MODE_WORLD_WRITEABLE which are deprecated, so don't use them.
done_
Wednesday, November 11, 2015
JavaScript: Local and Session storage
To store values to a browser we can use localStorage and sessionStorage just by:
and to get the values we just:
The localStorage keeps the values for ever (probably).
For each domain our browser has a pair of these objects and not for each page.
To store objects without functions we use JSON:
done_
localStorage["name"] = value;
and to get the values we just:
value = localStorage["name"];
The localStorage keeps the values for ever (probably).
The sessionStorage keeps the values until the page session ends.
For each domain our browser has a pair of these objects and not for each page.
To store objects without functions we use JSON:
localStorage["name"] = JSON.stringify(object);
object = JSON.parse(localStorage["name"]);
done_
Monday, November 9, 2015
JavaScript: jQuery selector
If we want to use JQuery ONLY for selecting elements like:
Why use a whole library, just:
or
Note: The only thing we gain from this is self-something.
continue_
$(".item")
Why use a whole library, just:
document.querySelectorAll(".item")
or
function q(query) { return document.querySelectorAll(query); } q(".item")
Note: The only thing we gain from this is self-something.
continue_
Friday, November 6, 2015
PHP: Simple counter
A simple counter using a text file.
The php code:
To add one to the counter must be called with GET parameter add.
To get the counter value must be called with no parameters.
done_
The php code:
<?php $path = "./counter.txt"; $count = intval(file_get_contents($path)); if(isset($_GET["add"])) { $count++; file_put_contents($path, $count); } echo $count; ?>
To add one to the counter must be called with GET parameter add.
To get the counter value must be called with no parameters.
done_
Wednesday, November 4, 2015
CSS: Transition all
In CSS if we define transitions, every time a value changes an animation-transition is created and executed.
So if we want to use transitions for all elements and for all values (which is wrong in many ways), we can just write:
done_
So if we want to use transitions for all elements and for all values (which is wrong in many ways), we can just write:
*{ transition: all 0.7s ease-in-out; }
done_
Monday, November 2, 2015
Techniques: Base64
Base64: make anything to a "simple" text and reverse.
Where "simple" means that contains only the 'A'–'Z', 'a'–'z', '0'–'9', '+', '/' and '=' characters.
It's not in any way something to use for encryptions its just for converting raw data to text.
It's most used when the data contain small bytes (control characters) which are trick to send handle in some environments.
continue_
Where "simple" means that contains only the 'A'–'Z', 'a'–'z', '0'–'9', '+', '/' and '=' characters.
It's not in any way something to use for encryptions its just for converting raw data to text.
It's most used when the data contain small bytes (control characters) which are trick to send handle in some environments.
continue_
Subscribe to:
Posts (Atom)