mai
11

Music of the Spheres – Touch season 1 ep. 9

Music of the Spheres

Kabbalah call them Lamed Vav Tzadikim, The 36 righteous ones. God will allow humankind to exist as long as there are 36 righteous people in the world. These hidden 36, no one knows who they are. But they walk among us blessed with the capacity to feel the souffering of the entire human race. And they work to eleviate that souffering, to make small changes to the spinning of the earth, to repair the universe if he will -Tikkun olam-

mar
01

CS 373: PROGRAMMING A ROBOTIC CAR

J’ai complêtement foiré la première évaluation du CS 373: PROGRAMMING A ROBOTIC CAR.
Mais je suis quand même fier de mon premier programme python qui produit le résultat voulu mais seulement après le deadline.

colors = [['red', 'green', 'green', 'red' , 'red'],
          ['red', 'red', 'green', 'red', 'red'],
          ['red', 'red', 'green', 'green', 'red'],
          ['red', 'red', 'red', 'red', 'red']]

measurements = ['green', 'green', 'green' ,'green', 'green']
motions = [[0,0],[0,1],[1,0],[1,0],[0,1]]
sensor_right = 0.7
p_move = 0.8

def show(p):
    for i in range(len(p)):
        print p[i]

#DO NOT USE IMPORT
#ENTER CODE BELOW HERE
#ANY CODE ABOVE WILL CAUSE
#HOMEWORK TO BE GRADED
#INCORRECT

equi_prob = 1./ (len(colors) * len(colors[0]))
mat_x = len(colors)
mat_y = len(colors[0])

p = [[equi_prob for x in range(mat_y)] for y in range(mat_x)]

def sense(p, Z):
    q = p
    s = 0
    for i in range(mat_x):
        for j in range(mat_y):
            hit = (Z == colors[i][j])
            q[i][j] = p[i][j] * (hit * sensor_right + (1-hit) * (1-sensor_right))
            s += q[i][j]

    for i in range(mat_x):
        for j in range(mat_y):
            q[i][j] = q[i][j] / s
    return q

def moveRight(p):
    q = [[equi_prob for x in range(mat_y)] for y in range(mat_x)]
    for i in range(mat_x):
        for j in range(mat_y):
            k = i+1
            if k >= mat_x:
                k=0
            q[k][j] = p[i][j]*(p_move) + p[k][j]*(1-p_move)
    return q

def moveLeft(p):
    q = [[equi_prob for x in range(mat_y)] for y in range(mat_x)]
    for i in range(mat_x):
        for j in range(mat_y):
            k = i-1
            if k < 0:
                k=mat_x-1
            q[k][j] = p[i][j]*(p_move) + p[k][j]*(1-p_move)
    return q

def moveUp(p):
    q = [[equi_prob for x in range(mat_y)] for y in range(mat_x)]
    for i in range(mat_x):
        for j in range(mat_y):
            k = j-1
            if k < 0:
                k=mat_y-1
            q[i][k] = p[i][j]*(p_move) + p[i][k]*(1-p_move)
    return q

def moveDown(p):
    q = [[equi_prob for x in range(mat_y)] for y in range(mat_x)]
    for i in range(mat_x):
        for j in range(mat_y):
            k = j+1
            if k >= mat_y:
                k=0
            q[i][k] = p[i][j]*(p_move) + p[i][k]*(1-p_move)
    return q

def process(p):
    for i in range(len(measurements)):
         if motions[i][0] == 1:
            p = moveRight(p)
         if motions[i][0] == -1:
            p = moveLeft(p)
         if motions[i][1] == -1:
            p = moveUp(p)
         if motions[i][1] == 1:
            p = moveDown(p)
         p = sense(p, measurements[i])

    return p

p = process(p)

#Your probability array must be printed
#with the following code.
#
show(p)

fév
12

JAVA 7 : copie de fichier et repertoire

Copie de fichier et répertoire avec NIO.2

La copie des fichiers et repertoires avec NIO.2 est devenue des plus simples. Elle se fait avec la méthode statique Files.copy()

 /**
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
*/
Path source = Paths.get("C:/java7", "source.txt");
Path destination = Paths.get("C:/java7/copy", source.getFileName().toString());
try
{
   Files.copy(source, destination);
}
catch (IOException e)
{
    e.printStackTrace();
}

La méthode Files.copy() a deux autres surcharges qui permettent de copier un fichier à partir / vers un InputStream ou un OutputStream.

public static long copy(InputStream in, Path target, CopyOption... options) throws IOException
public static long copy(Path source, OutputStream out) throws IOException

Les méthodes Files.copy() peuvent prendre une liste d’arguments provenant des énumérations StandardCopyOption et LinkOption.

  • REPLACE_EXISTING
  • COPY_ATTRIBUTES
  • NOFOLLOW_LINKS
import static java.nio.file.StandardCopyOption.REPLACE_EXISTING;
import static java.nio.file.StandardCopyOption.COPY_ATTRIBUTES;
import static java.nio.file.LinkOption.NOFOLLOW_LINKS;

fév
02

JAVA 7 – Lire et écrire plusieurs lignes dans un fichier texte avec NIO.2

Ecriture de plusieurs lignes dans un fichier texte

Un exemple de code d’écriture de plusieurs lignes dans un fichier texte à l’aides de nouveautés introduites part nio.2.

/**
* import java.nio.file.Paths;
* import java.nio.file.Path;
* import java.util.List;
* import java.util.ArrayList
* import java.nio.charset.Charset
*/

  Path helloPath = Paths.get("c:/naster/java7/nio2", "hello.txt");

  Charset charset = Charset.forName("UTF-8");
  List<String> lines = new ArrayList<>();

  lines.add("Hello World (en français - bonjour le monde -)");
  lines.add("sont les mots traditionnellement écrits ");
  lines.add("par un programme informatique simple dont ");
  lines.add("le but est de faire la démonstration rapide");
  lines.add("d'un langage de programmation");
  lines.add("\n");
  lines.add(" ldc \"Hello world!\" ");

  try
  {
    Files.write(helloPath, lines, charset, StandardOpenOption.APPEND);
  }
catch (IOException e)
{
  e.printStackTrace;
 }

Lecture de plusieurs lignes dans un fichier texte

Un exemple de code de lecture de plusieurs lignes dans un fichier texte à l’aides de nouveautés introduites part nio.2. Cette méthode n’est applicable que sur fichier de taille réduite. Pour de grand fichier, nous aurions droit à une Exception OutOfMemory

/**
* import java.nio.file.Paths;
* import java.nio.file.Path;
* import java.util.List;
* import java.nio.charset.Charset
*/

 Path helloPath = Paths.get("c:/naster/java7/nio2", "hello.txt");
 Charset charset = Charset.forName("UTF-8");

try
{
  List<String> lines = Files.readAllLines(helloPath, charset);

 for (String line : lines)
 {
   System.out.println(line);
 }
}
 catch (IOException e)
 {
   System.out.println(e);
 }

jan
24

Installation du plugin Portal Pack 3.0.5 dans Netebans 7.1

Si l’installation du plugin Portal Pack 3.0.5 dans Netbeans 7.1 échoue à cause d’une dépense vers le plugin org.netbeans.libs.commons_logging, suivant les étapes décrites ci-dessous.

Pour résoudre ce problème, il suffit de télécharger et installation le plugin suivant : http://dlc.sun.com.edgesuite.net/netbeans/updates/7.0.1/uc/final/distribution/modules/ide/org-netbeans-libs-commons_logging.nbm

 

déc
28

Acceder au direct message Twitter en utilisant EpiTwitter

Il existe un petit bug dans la librairie PHP EpiTwitter suite à la mise à jour du système de permission par Twitter.

Depuis Juillet dernier, Twitter a mise à jour son système de permission obligeant les applications utilisant les direct message à avoir un niveau de permission plus élevé : http://blog.twitter.com/2011/05/mission-permission.html

Suite à cette modification, même en élevant le niveau de permission comme l’ a dit sur le blog de Twitter, les application utilisant la librairie EpiTwitter, ne peuvent toujours pas accéder aux direct message, mais peuvent par contre envoyer des direct message.

Pour régler ce leger problème, il faudra modifier la ligne suivante dans le fichier EpiTwitter.php.

 protected $authenticateUrl= 'https://api.twitter.com/oauth/authenticate';

En

 protected $authenticateUrl= 'https://api.twitter.com/oauth/authorize';

La raison de cette modification peut être trouvée sur le site : https://dev.twitter.com/docs/application-permission-model/faq#you-said-you-were-restricting-this-permission-to-the-oauth-authorize-web-flow-only-will-oauthauthenticate-sign-in-with-twitter-support-the-new-permission

 

nov
29

Liste de cloud JAVA gratuit

Voici une liste de clouds gratuits et dédié à JAVA :

cloudbees : http://www.cloudbees.com/

Cloudbee est un PAAS -Platform As A Service- qui offre aux developpeurs de contruire et déployer leur application dans le cloud.

L’offre de CloudBee comprend un grand nombre de service -toujours dans le cloud- à savoir :

  • Jenkins : un plateforme d’intégration continue
  • RUN@cloud : Pour le déploiement d’application JAVA
  • MySQL database : Une base de données MySQL
  • New Relic : Pour du monitoring
  • Cloudant : un Database-as-a-Service utilisant appache CouchBD
  • SendGrid : Un service d’envoie de message par SMTP

Jelastic : http://jelastic.com/

Jelastic permet le déploiement d’application dans le cloud sans aucune configuration de la part du développeur.

nov
28

Convertion d’une date Excel en unix timestamp

Excel conserve interne les dates en comptant le nombre de jours passés depuis le premier (1) janvier 1900.


En développement, on utilise plus le timestamp ou encore UNIX timestamp qui lui est définit comme le nombre de secondes écroulé depuis le premier (1) Janvier 1970 UTC (Universal Time Coordinated).

Par exemple le 19 Juin 2011 sera représenté en Excel sous la forme 40713.

Une petite formule pour convertir les dates Excel en Unix timestamp serait :
unixTimestamp =  (ExcelDate – 25569) * 86400

où 25569 est le nombre de jours écroulés entre le 1 Janvier 1900 et le 1 Janvier 1970 UTC, et 86400 est le nombre de seconde que comprend une journée.

Le code JAVA qui permettra de faire automatiquement cette conversion serait :

public class ExcelToUnixTimestamp
{

  private static int _SEC_IN_DAY = 86400;
  private static int _DAY_DIFF = 25569;

  public static long ExcelToUnix(double date)
  {
    if(date <= _DAY_DIFF)
      return 0;

    return (long) ((date - _DAY_DIFF) * _SEC_IN_DAY);
  }

 public static double UnixToExcel(long timestamp)
  {
    return (timestamp / _SEC_IN_DAY) + _DAY_DIFF;
  }

}

 

oct
16

Jeu de devin en PowerShell


Je vous presente aujourd’hui le premier bout de code que j’ai écrit en PowerShell.
Le code de code permet de jouer au jeu de devin.






#Guess game
function jeu
{
 param($max, $rep)
 $hidden = Get-Random $max
 $nb = -1

 Write-Host "*********** Guess Game ***********"
 Write-Host "Please find the hidden number"
 for($i=1; ($i -le $rep) -and ($nb -ne $hidden) ; $i++)
 {
  Write-Host "Atempt $i"
  $nb = Read-Host
  if($nb -gt $hidden)
  {
    Write-Host "#The number $nb is too big for my brain"
  }

  if($nb -lt $hidden)
  {
   Write-Host "#The number $nb is not big anough for my mounth"
  }
 }

 if($nb -eq $hidden)
 {
  Write-Host "Cool ! you got it !!! !!! !!! !! "
 }
 else
 {
  Write-Host "Not smart enough to find $hidden"
 }
  Write-Host "*****-***** By The Nabster, http://darrylsite.com ****-*****"
}

sept
15

Accepter les certificats SSL non valides lors des requetes HTTPS

certificat sslJ’ai récemment été confronté à écrire une application qui échange des données avec applications qui utilise des certificats de sécurité parfois non valides. Après avoir passé quelques heures à faire des recherche et à écrire du code, je suis arrivé au bout de code présenté ci-dessous qui accepte touts les sites webs quelques soit leurs certificats.

public static URL getSslURL(String url) throws Exception
{
// Create a trust manager that does not validate certificate chains
TrustManager[] trustAllCerts = new TrustManager[]
{
new X509TrustManager()
{
public java.security.cert.X509Certificate[] getAcceptedIssuers()
{
return null;
}

public void checkClientTrusted(
java.security.cert.X509Certificate[] certs, String authType)
{
}

public void checkServerTrusted(
java.security.cert.X509Certificate[] certs, String authType)
{
}
}
};

// Create empty HostnameVerifier
HostnameVerifier hv = new HostnameVerifier()
{
public boolean verify(String arg0, SSLSession arg1)
{
return true;
}
};

// Install the all-trusting trust manager
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
HttpsURLConnection.setDefaultHostnameVerifier(hv);

return new URL(url);
}

On pourra alors l’utiliser comme suit :

URL page;

if (url.startsWith("https"))
{
page = getSslURL(url);
} else
{
page = new URL(url);
}

Articles plus anciens «