Newegg Iron Egg Guarantee

April 23rd, 2014 by Silabsoft

I haven’t made a post in awhile but recently I purchased a few items off newegg.com and ran into the Newegg Iron egg guarantee. For those of you that know nothing about it, its basically newegg’s version of Walmart price match guarantee. The official rundown is that they have the lowest prices available and if they don’t they will credit you the difference. I’ve never bothered with price matches previously partly because I’ve always considered them as advertising ploys but I gave it a shot this time.

One of the items I purchased was a Seagate HDD Neweggs price on it seemed pretty fair however after checking http://pcpartpicker.com/ I found the same part at bestbuy for 57.99 plus free shipping and handling. So after filling out the Newegg iron egg form to claim the reimbursement I received a response several hours later. Newegg did honor the sales price, but they do not offer the shipping difference (I think this is kind of lame considering they ask what the shipping difference is in the form). Another downside is that they do not offer the refund directly to the order they just give you an e-giftcard which has to be used within 90 days. Overall I was satisfied with the results and will remember to take advantage of it again in the future.

Silabsoft’s Dogefuacet moved to Cryptospout.com

February 14th, 2014 by Silabsoft

I have been plauged for a few weeks now with server instability and decided to use a new hosting company for the website. Since I was buying a new host I figured I would also snag a more generic domain that would allow me to add other faucets if I desired. Which brings me to this post. If you have Faucets you would like to see please suggest the coin in the comments. Please advise I already know about bitcoin, litecoin,peercoin ect but they are simply not the easiest to mine so at this time I will not be offering faucets for these coins.

Faucet down

January 28th, 2014 by Silabsoft

Just wanted to give a small shout out that I know the faucet is down. The daemon keeps crashing and I am currently unsure of the cause I do apologize for the outage and hope to have it returned in its working state as soon as possible.

Silabsoft’s PHP Dogecoin Faucet source code

December 30th, 2013 by Silabsoft

Here is the source code to my Dogecoin faucet, I make use of Recaptcha, Meekrodb, and Slim so you will need these libraries installed for it to function. Also you will need the jsonRPCClient which is what communicates with your dogecoin Daemon. I have included the source to the jsonPRCClient below. If you have any questions or see problems in the code please feel free to comment and I will try to reply as soon as possible.

Project dependencies:

  • http://www.slimframework.com/
  • http://www.meekro.com/
  • http://www.google.com/recaptcha

Dogecoinapi.php:

<?php
/*
Copyright 2013 Silabsoft http://silabsoft.org 
You are free to do whatever you wish with this code I only ask that you keep this copyright header intact and if you have found it useful please send some doge to my faucet D6Bfdc7Jw8vgiRJob24rkVYA37E5jAJj5r
*/
require('Slim.php');
require_once('jsonRPCClient.php');
require_once('meekrodb.2.2.class.php');
require_once('recaptchalib.php');
\Slim\Slim::registerAutoloader();
 
DB::$user = ''; 
DB::$password = '';
DB::$dbName = '';
 
const RECAPTCH_PRIVATE_KEY = "";
 
 
const RPC_USER = "";
const RPC_PASSWORD = "";
const RPC_ADDRESS = "";
const BALANCE_THRESHOLD = 20;
 
 
const WALLET_PASSWORD = "";
const WALLET_PASSWORD_TIMEOUT = 2;
 
 
$app = new \Slim\Slim();
$app->get('/stats', function () {
	DB::query("SELECT * FROM users");
	$counter = DB::count();
	echo "<p><strong>Faucet balance</strong>: ".createDogeRPCClient()->getbalance()."  Ɖ</p>";
	echo "<p><strong>Total Payouts</strong>: $counter </p>";
});
$app->post('/getcoins', function () {
	 $ip = $_SERVER['REMOTE_ADDR'];
	 $request = \Slim\Slim::getInstance()->request();
	 $address = $request->post('address');
	 $challenge = $request->post('recaptcha_challenge_field');
	 $response = $request->post('recaptcha_response_field');
	 $doge = createDogeRPCClient();
	 $balance = $doge->getbalance();
	 if($balance < BALANCE_THRESHOLD){
		echo "Sorry Balance is below threshold please consider donating to faucet or come back when it has some coins!";
		return;
	}
	 $valid = $doge->validateaddress($address);
	 if($valid["isvalid"] != 1){
		echo "Doge Address '$address' appears invalid please try again!";
		return;
	 }
	 $resp = recaptcha_check_answer (RECAPTCH_PRIVATE_KEY,$ip,$challenge,$response);
	 if (!$resp->is_valid) {	 
		echo "The reCAPTCHA wasn't entered correctly. Go back and try it again." . "(reCAPTCHA said: " . $resp->error . ")";
		return;
	 }
 
	 DB::query("SELECT * FROM users WHERE address=%s_address AND time > DATE_SUB( NOW( ) , INTERVAL 4 HOUR ) OR ip=%s_ip and time > DATE_SUB( NOW( ) , INTERVAL 4 HOUR )", 
		array(
		'address' => $address,
		'ip' => $ip,
		)
	);
	$count = DB::count();	 
	if($count > 0){
		echo "Sorry you are trying too soon to get more Dogecoins!";
		return;
	}
	$amount = rand(1,10);
	DB::insert('users', array('address' => $address,
		'time' => DB::sqleval("NOW()"),
		'ip' => $ip,
		'amount' => $amount
	));
	$doge->walletpassphrase(WALLET_PASSWORD,WALLET_PASSWORD_TIMEOUT);
    $doge->sendtoaddress($address,$amount);
	$doge->walletlock();
    echo "You've got <strong> $amount </strong> DOGE!";	
});
 
function createDogeRPCClient(){
	return new jsonRPCClient("http://".RPC_USER.":".RPC_PASSWORD."@".RPC_ADDRESS);
}
 
 
$app->run();
 
 
?>

jsonRPCClient:

<?php
/*
					COPYRIGHT
 
Copyright 2007 Sergio Vaccaro <sergio@inservibile.org>
 
This file is part of JSON-RPC PHP.
 
JSON-RPC PHP is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
JSON-RPC PHP is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with JSON-RPC PHP; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
*/
 
/**
 * The object of this class are generic jsonRPC 1.0 clients
 * http://json-rpc.org/wiki/specification
 *
 * @author sergio <jsonrpcphp@inservibile.org>
 */
class jsonRPCClient {
 
	/**
	 * Debug state
	 *
	 * @var boolean
	 */
	private $debug;
 
	/**
	 * The server URL
	 *
	 * @var string
	 */
	private $url;
	/**
	 * The request id
	 *
	 * @var integer
	 */
	private $id;
	/**
	 * If true, notifications are performed instead of requests
	 *
	 * @var boolean
	 */
	private $notification = false;
 
	/**
	 * Takes the connection parameters
	 *
	 * @param string $url
	 * @param boolean $debug
	 */
	public function __construct($url,$debug = false) {
		// server URL
		$this->url = $url;
		// proxy
		empty($proxy) ? $this->proxy = '' : $this->proxy = $proxy;
		// debug state
		empty($debug) ? $this->debug = false : $this->debug = true;
		// message id
		$this->id = 1;
	}
 
	/**
	 * Sets the notification state of the object. In this state, notifications are performed, instead of requests.
	 *
	 * @param boolean $notification
	 */
	public function setRPCNotification($notification) {
		empty($notification) ?
							$this->notification = false
							:
							$this->notification = true;
	}
 
	/**
	 * Performs a jsonRCP request and gets the results as an array
	 *
	 * @param string $method
	 * @param array $params
	 * @return array
	 */
	public function __call($method,$params) {
 
		// check
		if (!is_scalar($method)) {
			throw new Exception('Method name has no scalar value');
		}
 
		// check
		if (is_array($params)) {
			// no keys
			$params = array_values($params);
		} else {
			throw new Exception('Params must be given as array');
		}
 
		// sets notification or request task
		if ($this->notification) {
			$currentId = NULL;
		} else {
			$currentId = $this->id;
		}
 
		// prepares the request
		$request = array(
						'method' => $method,
						'params' => $params,
						'id' => $currentId
						);
		$request = json_encode($request);
		$this->debug && $this->debug.='***** Request *****'."\n".$request."\n".'***** End Of request *****'."\n\n";
 
		// performs the HTTP POST
		$opts = array ('http' => array (
							'method'  => 'POST',
							'header'  => 'Content-type: application/json',
							'content' => $request
							));
		$context  = stream_context_create($opts);
		if ($fp = @fopen($this->url, 'r', false, $context) or die("PANIC RANDOMISED BLOCK!")) {
			$response = '';
			while($row = fgets($fp)) {
				$response.= trim($row)."\n";
			}
			$this->debug && $this->debug.='***** Server response *****'."\n".$response.'***** End of server response *****'."\n";
			$response = json_decode($response,true);
		} else {
			throw new Exception('Unable to connect to '.$this->url);
		}
 
		// debug output
		if ($this->debug) {
			echo nl2br($debug);
		}
 
		// final checks and return
		if (!$this->notification) {
			// check
			if ($response['id'] != $currentId) {
				throw new Exception('Incorrect response id (request id: '.$currentId.', response id: '.$response['id'].')');
			}
			if (!is_null($response['error'])) {
				throw new Exception('Request error: '.$response['error']);
			}
 
			return $response['result'];
 
		} else {
			return true;
		}
	}
}
?>

js_rpg multimap

August 8th, 2013 by Silabsoft

I have the start of multimap loading in the mapgroup hopefully will have it fully functional soon!

 

multimaps js rpg multimap

Windows 7 disable sleep mode

August 5th, 2013 by Silabsoft

For whatever reason on a computer I was working on recently the computer was constantly resetting the default power setting to have hibernate turned on. I haven’t actually found the source of the change but I did find a good way to put it in its place

 

You are going to want to open your registery editor and travel down to:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power]:

 

You will see a dword key of:

“HibernateEnabled”

set it to 0 and save.

 

but wait theres more, the first time I did this I restarted the computer and found it went back to sleep. What you need to do is actually lock the registery key you can do this by right clicking the power folder and going to the permission settings. From there disable the keys to be modified by the current user and leave it for the administrator setting only.

 

The next step will be to figure out whats actually causing the hibernation setting change but for now I can live with the fact that the computer won’t be going to sleep anytime soon.

Student Notes

August 5th, 2013 by Silabsoft

So I havn’t updated the js_rpg in a few weeks but it’s for a semi valid reason! I was working on a small project requested by a friend. It allows her easily have miscellaneous student notes in a database accessible across the network. Although its not the most difficult thing’s i’ve written its probably one of the coolest for me as it actually has some real world use.( Inb4 silab client was useful to world.)

 

notes Student Notes

 

 

A personal message from Silabsoft.

August 2nd, 2013 by Silabsoft


it’s worth about $5

Layer properties for js_rpg

July 10th, 2013 by Silabsoft

After playing around with the Tiled application a map editor I came across one major annoyance, currently I was only supporting tile properties this means I had to go and write a property for passability and priority on each and every tile in a tile set if I wanted to use it. This was a lot of unnecessary work. For example if I had lets say a tile set of trees I know all the tops of the trees are passable but they also need to draw on top of the player. with the old setup I would of had to add properties for each of the tiles. I am way to too lazy to do this and started to investigate the tiled program further. After a little search i located where you can set layer properties. I’ve quickly modified the engine to support layer properties. Now I can have a layer dedicated to just trees and not have to worry about setting the priorities for the drawing as the layer will already have a priority property to draw above the player. This would leave only 1 issue, Tree bases shouldn’t draw above the player nor should they be passable so I have set the engine to take the tile properties over the layer properties.

 

layerpriorities Layer properties for js rpg

Dusting off js_rpg

July 9th, 2013 by Silabsoft

It’s been awhile since i’ve worked on anything for the site. Recently I forked https://github.com/yanko/js_rpg which was a nice little start of a 2D RPG game written in Javascript. some changes I’ve made to it so far was have it read JSON map files and allowed it to use more than 1 imageset for each map. Please feel to check out progress at http://silabsoft.org/Dragnor or on the github https://github.com/silabsoft/js_rpg

ss1 Dusting off js rpg