Sat Apr 27 01:21:12 2024
EVENTS
 FREE
SOFTWARE
INSTITUTE

POLITICS
JOBS
MEMBERS'
CORNER

MAILING
LIST

NYLXS Mailing Lists and Archives
NYLXS Members have a lot to say and share but we don't keep many secrets. Join the Hangout Mailing List and say your peice.

DATE 2016-12-01

LEARN

2024-04-27 | 2024-03-27 | 2024-02-27 | 2024-01-27 | 2023-12-27 | 2023-11-27 | 2023-10-27 | 2023-09-27 | 2023-08-27 | 2023-07-27 | 2023-06-27 | 2023-05-27 | 2023-04-27 | 2023-03-27 | 2023-02-27 | 2023-01-27 | 2022-12-27 | 2022-11-27 | 2022-10-27 | 2022-09-27 | 2022-08-27 | 2022-07-27 | 2022-06-27 | 2022-05-27 | 2022-04-27 | 2022-03-27 | 2022-02-27 | 2022-01-27 | 2021-12-27 | 2021-11-27 | 2021-10-27 | 2021-09-27 | 2021-08-27 | 2021-07-27 | 2021-06-27 | 2021-05-27 | 2021-04-27 | 2021-03-27 | 2021-02-27 | 2021-01-27 | 2020-12-27 | 2020-11-27 | 2020-10-27 | 2020-09-27 | 2020-08-27 | 2020-07-27 | 2020-06-27 | 2020-05-27 | 2020-04-27 | 2020-03-27 | 2020-02-27 | 2020-01-27 | 2019-12-27 | 2019-11-27 | 2019-10-27 | 2019-09-27 | 2019-08-27 | 2019-07-27 | 2019-06-27 | 2019-05-27 | 2019-04-27 | 2019-03-27 | 2019-02-27 | 2019-01-27 | 2018-12-27 | 2018-11-27 | 2018-10-27 | 2018-09-27 | 2018-08-27 | 2018-07-27 | 2018-06-27 | 2018-05-27 | 2018-04-27 | 2018-03-27 | 2018-02-27 | 2018-01-27 | 2017-12-27 | 2017-11-27 | 2017-10-27 | 2017-09-27 | 2017-08-27 | 2017-07-27 | 2017-06-27 | 2017-05-27 | 2017-04-27 | 2017-03-27 | 2017-02-27 | 2017-01-27 | 2016-12-27 | 2016-11-27 | 2016-10-27 | 2016-09-27 | 2016-08-27 | 2016-07-27 | 2016-06-27 | 2016-05-27 | 2016-04-27 | 2016-03-27 | 2016-02-27 | 2016-01-27 | 2015-12-27 | 2015-11-27 | 2015-10-27 | 2015-09-27 | 2015-08-27 | 2015-07-27 | 2015-06-27 | 2015-05-27 | 2015-04-27 | 2015-03-27 | 2015-02-27 | 2015-01-27 | 2014-12-27 | 2014-11-27 | 2014-10-27

Key: Value:

Key: Value:

MESSAGE
DATE 2016-12-06
FROM Ruben Safir
SUBJECT Re: [Learn] [Hangout-NYLXS] png data format
From learn-bounces-at-nylxs.com Tue Dec 6 09:19:09 2016
Return-Path:
X-Original-To: archive-at-mrbrklyn.com
Delivered-To: archive-at-mrbrklyn.com
Received: from www.mrbrklyn.com (www.mrbrklyn.com [96.57.23.82])
by mrbrklyn.com (Postfix) with ESMTP id 95E9B161317;
Tue, 6 Dec 2016 09:19:08 -0500 (EST)
X-Original-To: learn-at-nylxs.com
Delivered-To: learn-at-nylxs.com
Received: from [10.0.0.62] (flatbush.mrbrklyn.com [10.0.0.62])
by mrbrklyn.com (Postfix) with ESMTP id 4E825161311;
Tue, 6 Dec 2016 09:19:02 -0500 (EST)
To: hangout-at-nylxs.com, learn-at-nylxs.com
References: <66105244-4afa-4330-b0c2-0661bde965fd-at-mrbrklyn.com>
From: Ruben Safir
Message-ID: <88d707eb-a9af-0c28-b0f0-ba42a14efae5-at-mrbrklyn.com>
Date: Tue, 6 Dec 2016 09:19:02 -0500
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101
Thunderbird/45.5.0
MIME-Version: 1.0
In-Reply-To: <66105244-4afa-4330-b0c2-0661bde965fd-at-mrbrklyn.com>
Content-Type: multipart/mixed; boundary="------------16735A954701A5CD405EE5A1"
Subject: Re: [Learn] [Hangout-NYLXS] png data format
X-BeenThere: learn-at-nylxs.com
X-Mailman-Version: 2.1.17
Precedence: list
List-Id:
List-Unsubscribe: ,

List-Archive:
List-Post:
List-Help:
List-Subscribe: ,

Errors-To: learn-bounces-at-nylxs.com
Sender: "Learn"

This is a multi-part message in MIME format.
--------------16735A954701A5CD405EE5A1
Content-Type: text/plain; charset=windows-1252
Content-Transfer-Encoding: 7bit

On 12/06/2016 09:10 AM, ruben safir wrote:
> Hello
>
> I'm having trouble with this imput of data from a PNG image. The
> specification says that "chunks" have a 4 byte field that is the length
> of the attached data segment. I tried to read the length in for a chunk
> that has a length of 13, which was confirmed in a hexdump
>
> 0000000 211 120 116 107 015 012 032 012 -->>000 000 000 015<<-- 111 110
> 104 122
> 0000010 000 000 041 215 000 000 007 165 010 006 000 000 001 206 055 074
> 0000020 336 000 000 000 004 147 101 115 101 000 000 261 217 013 374 141
>
> I am storing the data in a uint32_t variable using the following code,
> but the value keeps showing up with a huge number 218103808 which
> happens to be the number that is evaluated by iostream for the value of
> the whole chunk
>
>
> done reading header
>
>
>
> Sizeof Chunk 4
> Raw Chunk Number 0: 218103808
> ***LENGTH****
> Length value => 218103808
> Sizeof Byte 1
> Character 0::
> ^-at-
> Byte 0::
> 0
> Character 1::
> ^-at-
> Byte 1::
> 0
> Character 2::
> ^-at-
> Byte 2::
> 0
> Character 3::
> Byte 3::
> 13
>
>
> As yet, when I break it down by single bytes, it returns 0 0 0 13, which
> is correct. ddd seems to say the same thing, and I don't know why.
> When evaluated as 4 bytes, you get this large number, but when you
> evaluate them seperately, each byte, it comes out right.
>
> The code snippet I'm using looks like this
>
> in the .h file #ifndef PNGPRJ
> #define PNGPRJ
> #include
> namespace png_proj{
> typedef uint32_t CHUNK;
>
>
>
> In the .cpp file
> void Image::read_chunk()
> {
> char * cur = get_index();
> CHUNK * tmp = reinterpret_cast(cur);
> std::cout << std::endl << "Sizeof Chunk " << sizeof(*tmp) << std::endl;
> for(int j = 0; j<4; j++){
> std::cout << "Raw Chunk Number " << j << ": " << *tmp << std::endl;
>
>
> switch ( j ) {
> case 0:
> std::cout << "***LENGTH****" << std::endl;
> set_length(static_cast(*tmp));
> std::cout << "Length value => " << static_cast(*tmp) << std::endl;
> break;
>
> case 1:
> std::cout << "***TYPE****" << std::endl;
> set_type(static_cast(*tmp));
> break;
>
> case 2:
> {
> std::cout << "***DATA****" << std::endl;
> unsigned long int l = static_cast(get_length());
> std::cout << "buffer size should be " << get_length() << std::endl;
> int8_t * buffer = new int8_t[l];
> std::cout << "buffer element size is " << *buffer << std::endl;
> std::cout << "buffer size is " << l << std::endl;
> for(unsigned int k = 0; k < get_length(); k++){
> buffer[k] = static_cast(tmp[k]);
> std::cout << "data " << *buffer << std::endl;
> }
> set_data(buffer);
> }
> break;
>
> case 3:
> std::cout << "***CRC****" << std::endl;
> set_crc(static_cast(*tmp));
> break;
>
> default:
> std::cout << "***NOMANDSLAND****" << std::endl;
> break;
> } /* ----- end switch ----- */
>
> char * tmp2 = reinterpret_cast(tmp); //reading each byte
> std::cout << "Sizeof Byte " << sizeof(*tmp2) << std::endl;
> //std::cout << "Mark ==>>" << __LINE__ << std::endl;
> for(int i=0; i<4; i++){
> std::cout << "Character " << i << "::" << std::endl << "\t" << *tmp2
> << std::endl;
> std::cout << "Byte " << i << "::" << std::endl << "\t" <<
> static_cast(*tmp2) << std::endl;
> tmp2++;
> }
> std::cout<> std::cout<> tmp++;
> cur = ( reinterpret_cast(tmp) );
> }
> set_index(cur);
> }
>
>
>
> I dug through libpng since this seems to not being doing what I
> expected. They seem to set it up as 4 byte array
>
> void /* PRIVATE */
> png_push_read_chunk(png_structrp png_ptr, png_inforp info_ptr)
> {
> png_uint_32 chunk_name;
> #ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED
> int keep; /* unknown handling method */
> #endif
>
> /* First we make sure we have enough data for the 4-byte chunk name
> * and the 4-byte chunk length before proceeding with decoding the
> * chunk data. To fully decode each of these chunks, we also make
> * sure we have enough data in the buffer for the 4-byte CRC at the
> * end of every chunk (except IDAT, which is handled separately).
> */
> if ((png_ptr->mode & PNG_HAVE_CHUNK_HEADER) == 0)
> {
> png_byte chunk_length[4];
> png_byte chunk_tag[4];
>
> PNG_PUSH_SAVE_BUFFER_IF_LT(8)
> png_push_fill_buffer(png_ptr, chunk_length, 4);
> png_ptr->push_length = png_get_uint_31(png_ptr, chunk_length);
> png_reset_crc(png_ptr);
> png_crc_read(png_ptr, chunk_tag, 4);
> png_ptr->chunk_name = PNG_CHUNK_FROM_STRING(chunk_tag);
> png_check_chunk_name(png_ptr, png_ptr->chunk_name);
> png_ptr->mode |= PNG_HAVE_CHUNK_HEADER;
> }
>
>
> I'm obviously not understanding something I'm evaluation here. So I'm
> wondering if anyone can shed light on this.
> http://www.nylxs.com/docs/grad_school/parallel/src/png/png_proj.h
> http://www.nylxs.com/docs/grad_school/parallel/src/png/png_proj.cpp
> http://www.nylxs.com/docs/grad_school/parallel/src/png/main_png.cpp
> http://www.nylxs.com/docs/grad_school/parallel/src/png/makefile
>
> ruben
>
> let.me.in
>
>
> Ruben
> _______________________________________________
> hangout mailing list
> hangout-at-nylxs.com
> http://www.nylxs.com/
>


--
So many immigrant groups have swept through our town
that Brooklyn, like Atlantis, reaches mythological
proportions in the mind of the world - RI Safir 1998
http://www.mrbrklyn.com

DRM is THEFT - We are the STAKEHOLDERS - RI Safir 2002
http://www.nylxs.com - Leadership Development in Free Software
http://www2.mrbrklyn.com/resources - Unpublished Archive
http://www.coinhangout.com - coins!
http://www.brooklyn-living.com

Being so tracked is for FARM ANIMALS and and extermination camps,
but incompatible with living as a free human being. -RI Safir 2013

--------------16735A954701A5CD405EE5A1
Content-Type: text/x-chdr;
name="png_proj.h"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="png_proj.h"

/*
* =====================================================================================
*
* Filename: png_proj.h
*
* Description: png_proj.h
*
* Version: 1.0
* Created: 11/30/2016 03:50:13 PM
* Revision: none
* Compiler: gcc
*
* Author: Ruben Safir (mn), ruben-at-mrbrklyn.com
* Company: NYLXS Inc
*
* =====================================================================================
*/

#ifndef PNGPRJ
#define PNGPRJ
#include
namespace png_proj{
typedef uint32_t CHUNK;
struct IHDR {
int32_t width;
int32_t height;
int8_t depth;
int8_t color_type; //0 greyscale, 2 RGB, 3 Palette, 4 greyscale with alpha, 6 RGB with alpha
int8_t compress; //must be 0
int8_t filter; // must be zero
int8_t interlace;
};

/*
* =====================================================================================
* Class: Image
* Description: Basic Image Library for PNG and Parrallel Programming Class
* =====================================================================================
*/
class Image
{
public:
/* ==================== LIFECYCLE ======================================= */
Image (); /* constructor */
Image(const char *);


/* ==================== ACCESSORS ======================================= */

/*
*--------------------------------------------------------------------------------------
* Class: Image
* Method: get_index
*--------------------------------------------------------------------------------------
*/
char * get_index ( )
{
return index;
} /* ----- end of method Image::get_index ----- */

/*
*--------------------------------------------------------------------------------------
* Class: Image
* Method: set_index
*--------------------------------------------------------------------------------------
*/
inline void set_index ( char * value )
{
index = value;
return ;
} /* ----- end of method Image::set_index ----- */

/*
*--------------------------------------------------------------------------------------
* Class: Image
* Method: get_pic
*--------------------------------------------------------------------------------------
*/
char * get_pic ( )
{
return pic;
} /* ----- end of method Image::get_pic ----- */

/*
*--------------------------------------------------------------------------------------
* Class: Image
* Method: get_header
*--------------------------------------------------------------------------------------
*/
char* get_header()
{
return loc_header_cpy;
} /* ----- end of method Image::get_header ----- */

/*
*--------------------------------------------------------------------------------------
* Class: Image
* Method: set_header
*--------------------------------------------------------------------------------------
*/
void set_header ()
{
char * start = loc_header_cpy;
//loc_header_cpy is an array int he constructor of 8 chars
// char * value = get_pic();
std::cout << "setting the header array**" << std::endl;
std::cout << "**************************" << std::endl;
for(int i = 0; i<8; i++){
std::cout << "setting the header" << *get_index() << std::endl;
*start = *get_index(); //this is a copy
std::cout << "header set to =>>" << *start<< std::endl;
next_index();
start++;
}
return ;
} /* ----- end of method Image::set_header ----- */


/*
*--------------------------------------------------------------------------------------
* Class: Image
* Method: set_pic
*--------------------------------------------------------------------------------------
*/
void set_pic ( char * value )
{
pic = value;
return ;
} /* ----- end of method Image::set_pic ----- */

/*
*--------------------------------------------------------------------------------------
* Class: Image
* Method: get_current_chunk
*--------------------------------------------------------------------------------------
*/
CHUNK * get_current_chunk ( )
{
return current_chunk;
} /* ----- end of method Image::get_current_chunk ----- */

/*
*--------------------------------------------------------------------------------------
* Class: Image
* Method: set_current_chunk
*--------------------------------------------------------------------------------------
*/
CHUNK * set_current_chunk ( CHUNK * value )
{
current_chunk = value;
return current_chunk ;
} /* ----- end of method Image::set_current_chunk ----- */

/*
*--------------------------------------------------------------------------------------
* Class: Image
* Method: get_length
*--------------------------------------------------------------------------------------
*/
long unsigned int get_length ( )
{
return length;
} /* ----- end of method Image::get_length ----- */

/*
*--------------------------------------------------------------------------------------
* Class: Image
* Method: set_length
*--------------------------------------------------------------------------------------
*/
long unsigned set_length ( long unsigned int value )
{
length = value;
return value ;
} /* ----- end of method Image::set_length ----- */

/*
*--------------------------------------------------------------------------------------
* Class: Image
* Method: get_type
*--------------------------------------------------------------------------------------
*/
inline int32_t get_type ( )
{
return type;
} /* ----- end of method Image::get_type ----- */

/*
*--------------------------------------------------------------------------------------
* Class: Image
* Method: set_type
*--------------------------------------------------------------------------------------
*/
int32_t set_type ( int32_t value )
{
type = value;
return value;
} /* ----- end of method Image::set_type ----- */


/*
*--------------------------------------------------------------------------------------
* Class: Image
* Method: get_data
*--------------------------------------------------------------------------------------
*/
int8_t * get_data ( )
{
return data;
} /* ----- end of method Image::get_data ----- */

/*
*--------------------------------------------------------------------------------------
* Class: Image
* Method: set_data
*--------------------------------------------------------------------------------------
*/
void set_data ( int8_t * value )
{
if(data != nullptr){
delete data;
}
data = value;//the size is determined in get_length()
return ;
} /* ----- end of method Image::set_data ----- */

/*
*--------------------------------------------------------------------------------------
* Class: Image
* Method: get_crc
*--------------------------------------------------------------------------------------
*/
int32_t get_crc ( )
{
return crc;
} /* ----- end of method Image::get_crc ----- */

/*
*--------------------------------------------------------------------------------------
* Class: Image
* Method: set_crc
*--------------------------------------------------------------------------------------
*/
void set_crc ( int32_t value )
{
crc = value;
return ;
} /* ----- end of method Image::set_crc ----- */


/* ==================== MUTATORS ======================================= */
void read_png( const char * in = nullptr );
void read_header();
void read_chunk();
void next_index(){
char * tmp = get_index();
set_index(++tmp);
};
void header(){
read_header();
};
const CHUNK * getNext( CHUNK* );

/* ==================== OPERATORS ======================================= */

/* ==================== DATA MEMBERS ======================================= */
protected:

private:
char * pic;
char loc_header_cpy[8];
CHUNK * current_chunk;
char * index;
long unsigned int length;
int8_t * data;
int32_t type;
int32_t crc;
}; /* ----- end of class Image ----- */


}
#endif

--------------16735A954701A5CD405EE5A1
Content-Type: text/x-c++src;
name="png_proj.cpp"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="png_proj.cpp"

/*
* =====================================================================================
*
* Filename: png_proj.cpp
*
* Description: PNG Project
*
* Version: 1.0
* Created: 11/15/2016 12:08:44 PM
* Revision: none
* Compiler: gcc
*
* Author: Ruben Safir (mn), ruben-at-mrbrklyn.com
* Company: NYLXS Inc
*
* =====================================================================================
*/
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include "png_proj.h"

namespace png_proj{

Image::Image(const char * in)
{
if(in != nullptr)
{
this->read_png(in);
}
}

void Image::read_png( const char * in)
{
std::streampos size;
std::ifstream file;
char * image;
if(in == nullptr)
{
file.open("/home/ruben/png_project/airplane2.PNG", std::ios::in|std::ios::binary|std::ios::ate);

}else
{
file.open(in, std::ios::in|std::ios::binary|std::ios::ate);
}

if (file.is_open())
{
size = file.tellg();
image = new char [size];
file.seekg (0, std::ios::beg);
file.read (image, size);
file.close();

std::cout << std::endl << "the entire file content is in memory";
std::cout << std::endl << "File Size: " << size << std::endl ;
set_index(image);//set the pic buffer index
set_pic(image); //store the pic buffer
set_header(); //set the internal copy of the header
}
else{
std::cout << std::endl << "Unable to open file";
}
}

void Image::read_header()
{
std::cout << "OK lets read the header!!" << std::endl;
if(get_header() == nullptr)
{
std::cerr << "The header hasn't been initialized yet" << std::endl;
//this shouldn't be possible because it is defined as 8 char int in the const
//and then it is filled user set_header
return;
}
for(int i = 0;i<8;i++)
{
std::cout << "index: " << i << " value: " << *( get_header() + i ) << std::endl;
}
std::cout << std::endl << "done reading header" << std::endl << std::endl << std::endl;
}

void Image::read_chunk()
{
char * cur = get_index();
CHUNK * tmp = reinterpret_cast(cur);
std::cout << std::endl << "Sizeof Chunk " << sizeof(*tmp) << std::endl;
for(int j = 0; j<4; j++){
std::cout << "Raw Chunk Number " << j << ": " << *tmp << std::endl;


switch ( j ) {
case 0:
std::cout << "***LENGTH****" << std::endl;
set_length(static_cast(*tmp));
std::cout << "Length value => " << static_cast(*tmp) << std::endl;
break;

case 1:
std::cout << "***TYPE****" << std::endl;
set_type(static_cast(*tmp));
break;

case 2:
{
std::cout << "***DATA****" << std::endl;
unsigned long int l = static_cast(get_length());
std::cout << "buffer size should be " << get_length() << std::endl;
int8_t * buffer = new int8_t[l];
std::cout << "buffer element size is " << *buffer << std::endl;
std::cout << "buffer size is " << l << std::endl;
for(unsigned int k = 0; k < get_length(); k++){
buffer[k] = static_cast(tmp[k]);
std::cout << "data " << *buffer << std::endl;
}
set_data(buffer);
}
break;

case 3:
std::cout << "***CRC****" << std::endl;
set_crc(static_cast(*tmp));
break;

default:
std::cout << "***NOMANDSLAND****" << std::endl;
break;
} /* ----- end switch ----- */

char * tmp2 = reinterpret_cast(tmp); //reading each byte
std::cout << "Sizeof Byte " << sizeof(*tmp2) << std::endl;
//std::cout << "Mark ==>>" << __LINE__ << std::endl;
for(int i=0; i<4; i++){
std::cout << "Character " << i << "::" << std::endl << "\t" << *tmp2 << std::endl;
std::cout << "Byte " << i << "::" << std::endl << "\t" << static_cast(*tmp2) << std::endl;
tmp2++;
}
std::cout< std::cout< tmp++;
cur = ( reinterpret_cast(tmp) );
}
set_index(cur);
}

/*
*--------------------------------------------------------------------------------------
* Class: Image
* Method: getNext
* Description: gets the next chunk and reads the data
*--------------------------------------------------------------------------------------
*/

const CHUNK * Image::getNext (CHUNK * next = nullptr )
{
if (next == nullptr)
next = get_current_chunk();

read_chunk();
unsigned long int size_length = get_length();
next = next + size_length + 12;
set_current_chunk(next); // set cursor here
return next;
} /* ----- end of method Image::getNext ----- */


}


--------------16735A954701A5CD405EE5A1
Content-Type: text/x-c++src;
name="main_png.cpp"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="main_png.cpp"

/*
* =====================================================================================
*
* Filename: main_png.cpp
*
* Description: PNG Project - main
*
* Version: 1.0
* Created: 11/30/2016 02:57:46 PM
* Revision: 1.0
* Compiler: gcc
*
* Author: Ruben Safir (mn), ruben-at-mrbrklyn.com
* Company: NYLXS Inc
*
* =====================================================================================
*/
#include
#include "png_proj.h"

int main(int argc, char **argv)
{
// const char * image_file_path = nullptr;
const char * image_file_path = "/home/ruben/images/tzfat/tzfat_dawn_blended_fused.png";
//const char * image_file_path = "/home/ruben/photo_album/images/135-red_sea_1.png";
png_proj::Image pngtestfile{image_file_path};
// pngtestfile.read_png();
pngtestfile.read_header();
pngtestfile.read_chunk();

std::cout << "MAIN: line:" << __LINE__ << " char * image size==>" << sizeof(*image_file_path) << std::endl;
return EXIT_SUCCESS;
}

--------------16735A954701A5CD405EE5A1
Content-Type: text/plain; charset=UTF-8;
name="makefile"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="makefile"

CXX:=g++
CXXFLAGS:=-Wall -ggdb -pg -pthread

LDFLAGS:=-L/usr/local/lib/mysql -lmysqlpp -lmysqlclient -lz


mypng : png_proj.o main.o
${CXX} ${CXXFLAGS} -o mypng png_proj.o main.o

main.o : main_png.cpp
${CXX} ${CXXFLAGS} -o main.o -c main_png.cpp

png_proj.o : png_proj.cpp
${CXX} ${CXXFLAGS} -o png_proj.o -c png_proj.cpp

clean :
rm png_proj *.o make.deps
touch *.cpp *.h

include make.deps
make.deps: *.cpp ; gcc -M *.cpp >$-at-

--------------16735A954701A5CD405EE5A1
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Learn mailing list
Learn-at-nylxs.com
http://lists.mrbrklyn.com/mailman/listinfo/learn

--------------16735A954701A5CD405EE5A1--

  1. 2016-12-01 Ruben Safir <ruben.safir-at-my.liu.edu> Subject: [Learn] Fwd: Patrolling the Dark Net,
  2. 2016-12-02 ruben safir <ruben-at-mrbrklyn.com> Subject: [Learn] Fwd: Tutorial on threaded binary tree part 1: simple
  3. 2016-12-03 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] Witner Labs
  4. 2016-12-04 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] Nice lecture on Quantum Mechanics
  5. 2016-12-05 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] information access, copyright wars and DRM
  6. 2016-12-06 Christopher League <league-at-contrapunctus.net> Re: [Learn] png data format
  7. 2016-12-06 Christopher League <league-at-contrapunctus.net> Re: [Learn] png data format
  8. 2016-12-06 Christopher League <league-at-contrapunctus.net> Re: [Learn] png data format
  9. 2016-12-06 Ruben Safir <ruben-at-mrbrklyn.com> Re: [Learn] png data format
  10. 2016-12-06 Christopher League <league-at-contrapunctus.net> Re: [Learn] png data format
  11. 2016-12-06 Ruben Safir <ruben.safir-at-my.liu.edu> Re: [Learn] png data format
  12. 2016-12-06 Ruben Safir <ruben-at-mrbrklyn.com> Re: [Learn] png data format
  13. 2016-12-06 Christopher League <league-at-contrapunctus.net> Re: [Learn] png data format
  14. 2016-12-06 Ruben Safir <mrbrklyn-at-panix.com> Re: [Learn] png data format
  15. 2016-12-06 Christopher League <league-at-contrapunctus.net> Re: [Learn] png data format
  16. 2016-12-06 Ruben Safir <ruben-at-mrbrklyn.com> Re: [Learn] [Hangout-NYLXS] png data format
  17. 2016-12-06 John Bowler <john.cunningham.bowler-at-gmail.com> Re: [Learn] [png-mng-implement] 4 byte length storage
  18. 2016-12-06 John Bowler <john.cunningham.bowler-at-gmail.com> Re: [Learn] [png-mng-implement] 4 byte length storage
  19. 2016-12-06 Ruben Safir <ruben-at-mrbrklyn.com> Re: [Learn] [png-mng-implement] 4 byte length storage
  20. 2016-12-06 ruben safir <ruben-at-mrbrklyn.com> Subject: [Learn] Fwd: Ocaml
  21. 2016-12-06 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] Fwd: Re: [luny-talk] Humble Bundle O'Reilly UNIX books
  22. 2016-12-06 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] JT's words
  23. 2016-12-06 ruben safir <ruben-at-mrbrklyn.com> Subject: [Learn] png data format
  24. 2016-12-07 ruben safir <ruben-at-mrbrklyn.com> Subject: [Learn] Fwd: Re: png data format
  25. 2016-12-08 ruben safir <ruben-at-mrbrklyn.com> Subject: [Learn] Fwd: png data format
  26. 2016-12-08 ruben safir <ruben-at-mrbrklyn.com> Subject: [Learn] Fwd: Re: png data format
  27. 2016-12-08 ruben safir <ruben-at-mrbrklyn.com> Subject: [Learn] Fwd: Re: png data format
  28. 2016-12-10 Ruben Safir <ruben-at-mrbrklyn.com> Re: [Learn] references to pointers
  29. 2016-12-10 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] C++ returning lvalue references and pointers and refs
  30. 2016-12-10 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] const puzzle and literal type arguments
  31. 2016-12-11 ruben safir <ruben-at-mrbrklyn.com> Subject: [Learn] Fwd: Re: png data format
  32. 2016-12-12 Ruben Safir <ruben-at-mrbrklyn.com> Re: [Learn] Fwd: Re: png data format
  33. 2016-12-12 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] gene phylogienics of homonids
  34. 2016-12-13 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] Bit Depth
  35. 2016-12-13 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] C++ Threads Workshop
  36. 2016-12-13 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] Summer Jobs
  37. 2016-12-14 From: "Mancini, Sabin (DFS)" <Sabin.Mancini-at-dfs.ny.gov> Subject: [Learn] For Ruben ( + those in NYC Metro ) : Holiday Social Event
  38. 2016-12-14 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] Fwd: Re: [dinosaur] Ceratopsid (Centrosaurinae:
  39. 2016-12-15 Ruben Safir <ruben.safir-at-my.liu.edu> Re: [Learn] Happy Holidays
  40. 2016-12-15 Ruben Safir <ruben-at-mrbrklyn.com> Re: [Learn] zlib demo with vector::resize
  41. 2016-12-15 John Bowler <john.cunningham.bowler-at-gmail.com> Re: [Learn] [png-mng-implement] 4 byte length storage
  42. 2016-12-15 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] Fwd: [dinosaur] Elephant bird nuclear genome fragments
  43. 2016-12-15 Christopher League <league-at-contrapunctus.net> Subject: [Learn] zlib demo with vector::resize
  44. 2016-12-16 Ruben Safir <ruben-at-mrbrklyn.com> Re: [Learn] zlib demo with vector::resize
  45. 2016-12-16 Christopher League <league-at-contrapunctus.net> Re: [Learn] zlib demo with vector::resize
  46. 2016-12-16 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] PNG Parallel Programming problem
  47. 2016-12-17 Ruben Safir <ruben-at-mrbrklyn.com> Re: [Learn] [Hangout-NYLXS] I'm sure it's a coincidence, part n+1
  48. 2016-12-17 Ruben Safir <mrbrklyn-at-panix.com> Subject: [Learn] irc thread on the use of object methods in threads
  49. 2016-12-17 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] PNG threaded program
  50. 2016-12-18 ruben safir <ruben-at-mrbrklyn.com> Re: [Learn] Threads and Object Methods
  51. 2016-12-18 ruben safir <ruben-at-mrbrklyn.com> Re: [Learn] Threads and Object Methods
  52. 2016-12-18 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] Look C++ is a functional programming language
  53. 2016-12-19 Ruben Safir <ruben-at-mrbrklyn.com> Re: [Learn] C++ Threading
  54. 2016-12-19 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] C++ Threading
  55. 2016-12-19 ISOC-NY announcements <announce-at-lists.isoc-ny.org> Subject: [Learn] [isoc-ny] JOB: Telecommunications Policy Specialist -at- NTIA
  56. 2016-12-20 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] F'ing Mouse Pad
  57. 2016-12-20 mrbrklyn <mrbrklyn-at-panix.com> Subject: [Learn] Phylogenetic study worth noting
  58. 2016-12-21 Samir Iabbassen <Samir.Iabbassen-at-liu.edu> Re: [Learn] Noobdy is home
  59. 2016-12-21 Ruben Safir <mrbrklyn-at-panix.com> Re: [Learn] Noobdy is home
  60. 2016-12-21 Ruben Safir <ruben-at-mrbrklyn.com> Re: [Learn] Noobdy is home
  61. 2016-12-21 Samir Iabbassen <Samir.Iabbassen-at-liu.edu> Re: [Learn] thread concurancy
  62. 2016-12-21 Ruben Safir <mrbrklyn-at-panix.com> Re: [Learn] thread concurancy
  63. 2016-12-21 Ruben Safir <mrbrklyn-at-panix.com> Subject: [Learn] (fwd) Re: lamda's in classes
  64. 2016-12-21 Ruben Safir <mrbrklyn-at-panix.com> Subject: [Learn] (fwd) Re: lamda's in classes
  65. 2016-12-21 Ruben Safir <mrbrklyn-at-panix.com> Subject: [Learn] (fwd) Re: thread concurancy
  66. 2016-12-21 Ruben Safir <mrbrklyn-at-panix.com> Subject: [Learn] (fwd) Re: Threads and Object Methods
  67. 2016-12-21 Ruben Safir <mrbrklyn-at-panix.com> Subject: [Learn] (fwd) Re: Threads and Object Methods
  68. 2016-12-21 Ruben Safir <mrbrklyn-at-panix.com> Subject: [Learn] (fwd) Re: Threads and Object Methods
  69. 2016-12-21 Ruben Safir <mrbrklyn-at-panix.com> Subject: [Learn] (fwd) Re: Threads and Object Methods
  70. 2016-12-21 Ruben Safir <mrbrklyn-at-panix.com> Subject: [Learn] (fwd) Re: Threads and Object Methods
  71. 2016-12-21 Ruben Safir <mrbrklyn-at-panix.com> Subject: [Learn] (fwd) Re: Threads and Object Methods
  72. 2016-12-21 Ruben Safir <mrbrklyn-at-panix.com> Subject: [Learn] (fwd) Re: Threads and Object Methods
  73. 2016-12-21 Ruben Safir <mrbrklyn-at-panix.com> Subject: [Learn] (fwd) Re: Threads and Object Methods
  74. 2016-12-21 Ruben Safir <mrbrklyn-at-panix.com> Subject: [Learn] (fwd) Re: Threads and Object Methods
  75. 2016-12-21 Ruben Safir <mrbrklyn-at-panix.com> Subject: [Learn] (fwd) thread concurancy
  76. 2016-12-21 Ruben Safir <mrbrklyn-at-panix.com> Subject: [Learn] (fwd) Threads and Object Methods
  77. 2016-12-21 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] I need help
  78. 2016-12-21 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] Noobdy is home
  79. 2016-12-21 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] thread concurancy
  80. 2016-12-21 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] [Hangout-NYLXS] Marnchester by the Sea
  81. 2016-12-22 Ruben Safir <mrbrklyn-at-panix.com> Re: [Learn] [Hangout-NYLXS] And be aware you were an unexcused
  82. 2016-12-22 ruben safir <ruben-at-mrbrklyn.com> Subject: [Learn] Fwd: Re: thread concurancy
  83. 2016-12-23 Ruben Safir <ruben-at-mrbrklyn.com> Re: [Learn] HOPL (History of Programming Languages)
  84. 2016-12-23 Ruben Safir <ruben-at-mrbrklyn.com> Re: [Learn] Noobdy is home
  85. 2016-12-23 Ruben Safir <ruben-at-mrbrklyn.com> Re: [Learn] Tiny Compiler in many languages at Rosettacode.org
  86. 2016-12-25 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] Google and C++
  87. 2016-12-25 Ruben Safir <ruben.safir-at-my.liu.edu> Subject: [Learn] phylogentics
  88. 2016-12-27 Samir Iabbassen <Samir.Iabbassen-at-liu.edu> Re: [Learn] thread concurancy

NYLXS are Do'ers and the first step of Doing is Joining! Join NYLXS and make a difference in your community today!