[c++] fopen tip

Atunci cand se aglomereaza mai multe buguri…. se produce o crapaciune ( crash :) ), in rest exista doar noroc.

Acum, am dat de un bug foarte subtil ( care, la mine, se reproduce in combinatie cu alt bug :) ).

Sa exemplific prin cod:

  char *filename = "test.txt";
  FILE* file = fopen( filename, "w" );
  fclose( file );
  /* some code */

Ideea e ca functia fopen poate esua si astfel variabila “file” se seteaza cu NULL si in continuare pasand variabila “file” cu valoare NULL functiei fclose duce la o crapaciune foarte urata… ceea ce ar fi bine de evitat

Corect ar fi :

  char *filename = "test.txt";
  FILE* file = fopen( filename, "w" );
  if ( file )
    fclose( file );
  /* some code */

enjoy.

Cum facem CSS mai dinamic cu PHP

Se presupune ca in timpul apropiat CSS-ul va suferi ceva modificari si va fi posibil de declarat un fel de variabile/constante si va fi mai usor de adapta css-ul de la un proiect la altul. Pina atunci exista o astfel de solutie: utilizam php-ul pentru a face css-ul mai dinamic, mai variabil si mai comod. Php-ul ne permite sa generam fisiere css, modificind contentul cu functia HEADER :

<?php header('content-type: text/css'); ?>

in asa mod, fisierul apelat, va fi considerat de browser ca fiind de tip css. Si asta ne permite sa scrim cod php in viitorul fisier css.
Si de exemplu vom face asa un fisier : style.css.php

<?php
    header('content-type: text/css');
    if ( isset( $_GET['style'] ) ) {
        switch($_GET['style']){
            case 'blue':
                define('T_WIDTH_CELL',90);
                define('T_PADDING_CELL',10);
                define('T_FONT_SIZE',12);
                define('T_FONT_FAMILY','Verdana,Tahoma,"Trebuchet MS",sans-serif');
                define('T_TH_BKG','e1e9ed');
                define('T_TD_BKG','eef3f5');
                define('T_BORDER_C','c9d7df');
                define('T_TH_C','476678');
                define('T_TD_C','80a2b4');
                break;
            case 'orange':             
                define('T_WIDTH_CELL',120);
                define('T_PADDING_CELL',8);
                define('T_FONT_SIZE',11);
                define('T_FONT_FAMILY','"Trebuchet MS",Verdana,Tahoma,sans-serif');
                define('T_TH_BKG','ffb979');
                define('T_TD_BKG','ffc189');
                define('T_BORDER_C','ffa859');
                define('T_TH_C','9a4900');
                define('T_TD_C','fa7700');
                break;
            case 'green':
                define('T_WIDTH_CELL',120);
                define('T_PADDING_CELL',40);
                define('T_FONT_SIZE',15);
                define('T_FONT_FAMILY','"Tahoma,sans-serif,Trebuchet MS",Verdana');
                define('T_TH_BKG','e2e7c9');
                define('T_TD_BKG','e9edd6');
                define('T_BORDER_C','d4dcb0');
                define('T_TH_C','707c37');
                define('T_TD_C','acbb65');
                break;
            default :
                define('T_WIDTH_CELL',120);
                define('T_PADDING_CELL',40);
                define('T_FONT_SIZE',15);
                define('T_FONT_FAMILY','"Tahoma,sans-serif,Trebuchet MS",Verdana');
                define('T_TH_BKG','cacaca');
                define('T_TD_BKG','d2d2d2');
                define('T_BORDER_C','b9b9b9');
                define('T_TH_C','535353');
                define('T_TD_C','868686');
                break;
        }
       
    }else{
        define('T_WIDTH_CELL',90);
        define('T_PADDING_CELL',10);
        define('T_FONT_SIZE',12);
        define('T_FONT_FAMILY','Verdana,Tahoma,"Trebuchet MS",sans-serif');
        define('T_TH_BKG','e1e9ed');
        define('T_TD_BKG','eef3f5');
        define('T_BORDER_C','c9d7df');
        define('T_TH_C','476678');
        define('T_TD_C','80a2b4');
    }
?>

table.my-table{
    padding:0px;
    margin:0px;
    border-collapse:collapse;
}

table.my-table th{
    width: <?php echo T_WIDTH_CELL;?>px;
    padding: <?php echo T_PADDING_CELL;?>px;
    margin: 0px;
    background:#<?php  echo T_TH_BKG; ?>;
    border:1px solid #<?php echo T_BORDER_C; ?>;
    text-align:center;
    font:normal <?php echo T_FONT_SIZE.' '.T_FONT_FAMILY;  ?>;
    color:#<?php echo T_TH_C; ?>;
}


table.my-table td{
    width: <?php echo T_WIDTH_CELL?> px;
    padding: 5px 5px 5px <?php echo T_PADDING_CELL?>px;
    margin: 0px;
    background:#<?php  echo T_TD_BKG; ?>;
    border:1px solid #<?php echo T_BORDER_C; ?>;
    text-align:left;
    font:normal <?php echo T_FONT_SIZE.' '.T_FONT_FAMILY;  ?>;
    color:#<?php echo T_TD_C; ?>;
}

si un fisier index.php :

<html>
<head>
    <title>Test dinamic CSS </title>
    <link rel="stylesheet" href="style.css.php?style=green" type="text/css" media="all" />
</head>
<body>
<center>
    <table cellspacing="0" cellpadding="0" class="my-table">
        <tr>
            <th>Th Division 1</th>
            <th>Th Division 2</th>
            <th>Th Division 3</th>
            <th>Th Division 4</th>
        </tr>
        <tr>
            <td>Td Division 1</td>
            <td>Td Division 2</td>
            <td>Td Division 3</td>
            <td>Td Division 4</td>
        </tr>
        <tr>
            <td>Td Division 1</td>
            <td>Td Division 2</td>
            <td>Td Division 3</td>
            <td>Td Division 4</td>
        </tr>
</table>
<center>
</body>
</html>

si astfel putem sa apelam fisierul style.css.php cu trei parametri : blue, green, orange; care se transmit prin $_GET, in dependenta de care se genereaza un anumit fisier css. Daca intimplator se va gresi parametrul si nu va fi unul din cei enumerati mai sus se va genera un fisier css care va stiliza tabelul my-table in culori gri. Implicit se va apela fisierul css cu parametrul blue. comod nu ?
aici puteti sa scoateti sursele, sursele sunt verificate.

Cum utilizam un font extern in CSS

La realizarea unei pagini web, de cele mai multe ori ma bazez pe designul creat in photoshop. Apoi incep sa formatez template-ul. Si de multe ori am avut o astfel de problema ca selectind in photoshop un anumit font, pentru a scrie un text cu un font mai special, in browser textul nu arata ca in photoshop. Browser-ele utilizeaza alte font-uri. Este de mentionat ca pe pc meu unde acest font este instalat deja in sistemul de operare, pagina arata bine, insa pe alte pc-uri, aceasta pagina utilizeaza alt font, pentru a afisa textul, este vorba despre un font implicit “Arial“. Si din cauza acestei probleme in loc de text utilizam imagini.

Insa, de exemplu, daca este vorba de ceva dinamic, ca un blog este necesar ca titlurile posturilor sa fie scrise mai special, atunci imaginile nu sunt o solutie.

Pentru acesta este un mecanizm special care permite dezvoltatorului sa utilizeze orice font. Trebuie de mentionat ca formatul fontului trebuie sa fie .ttf – pentru browserele Mozilla, Safari, Chrome, Opera; si formatul .eot – pentru IE.

” Aveti nevoie doar de fontul cu formatul .ttf in internet sunt o multime de servicii care transforma din .ttf in .eot

Voi arata un exemplu :

1. includem in proiect fontul .ttf si .eot.

ex:

fonturile vor fi plasate in directoriul resources/fonts (din directoriul parinte).
paginile de stil, (css) in resources/css

paginile html direct in directoriul parinte.

2. Avem urmatoarea structura :

resources/fonts/Bleeding Cowboys.ttf
resources/fonts/Bleeding Cowboys.eot
resources/css/style.css
home.html

Si avem urmatoarele surse :
home.html

<html>
  <head>
  <title> Extern Fonts Enbed</title>
  <link rel="stylesheet"
   href="resources/css/style.css"
   type="text/css"
   media="all" />
  </head>
  <body>
    <br>
    <br>
    <br>
    <br>
      <div class="my-class-silver-big"><center>
        Silver big  extern fonts enbed
      </center></div>
      <div class="my-class-silver-small"><center>
        Silver small  extern fonts enbed
      </center></div>
      <div class="my-class-black-small"><center>
        Black small  extern fonts enbed
      </center></div>
      <div class="my-class-black-big"><center>
        Black big  extern fonts enbed
      </center></div>
  </body>
</html>

Pagina de stil
resources/css/style.css

@font-face {
  font-family:MyFontTitle;
  src:url("../fonts/Bleeding Cowboys.eot");
}

@font-face {
  font-family:MyFontTitle;
  src:url("../fonts/Bleeding Cowboys.ttf");
}

.my-class-silver-small {
  font-family:MyFontTitle;
  font-size:15px;
  color:silver;
}

.my-class-silver-big {
  font-family:MyFontTitle;
  font-size:36px;
  font-weight:bold;
  color:silver;
}

.my-class-black-small {
  font:normal 15px MyFontTitle;
  color:black;
}

.my-class-black-big {
  font:bold 36px MyFontTitle;
  color:black;
}

Si cam asa sa primit rezultatul :

aici download surse