All your web development code goes here

Archive for March, 2012

oracle : create external table

 in browser type url ip-Of-Server:1158/em/console/

  1. in browser type url ip-Of-Server:1158/em/console/
  2. login there
  3. go to Schema-> Directory Objects
  4. click the “create” Button
  5. fill in the form
  6. * Name DIR_WLIST
    * Path

    /tmp/test_v_dir

    where Name= name of virtual directory and Path= path to the directory

  7. now thru ftp client (or putty ) create a file test.txt in /tmp/test_v_dir/
  8. then go to sqlplus
  9. type in follwing query

create table XTERN_test( student_name varchar2(100) )
organization external (
type oracle_loader
default directory DIR_WLIST
access parameters (
records delimited by newline
)
location (‘test.txt’)
)
reject limit unlimited;

oracle : external table

1. in browser type url ip-Of-Server:1158/em/console/

  1. in browser type url ip-Of-Server:1158/em/console/
  2. login there
  3. go to Schema-> Directory Objects
  4. click the “create” Button
  5. fill in the form
  6. * Name DIR_WLIST
    * Path
    /tmp/test_v_dir

    where Name= name of virtual directory and Path= path to the directory

  7. now thru ftp client (or putty ) create a file test.txt in /tmp/test_v_dir/
  8. then go to sqlplus
  9. type in follwing query
  10. create table XTERN_test( student_name varchar2(100) )
    organization external (
    type oracle_loader
    default directory DIR_WLIST
    access parameters (
    records delimited by newline
    )
    location (‘test.txt’)
    )
    reject limit unlimited;

How to Check if a Date is More or Less Than a Month Ago with PHP

html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, font, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td { background: transparent; border: 0; margin: 0; padding: 0; vertical-align: baseline; } body { line-height: 1; } h1, h2, h3, h4, h5, h6 { clear: both; font-weight: normal; } ol, ul { list-style: none; } blockquote { quotes: none; } blockquote:before, blockquote:after { content: ”; content: none; } del { text-decoration: line-through; } /* tables still need ‘cellspacing=”0″‘ in the markup */ table { border-collapse: collapse; border-spacing: 0; } a img { border: none; } /* =Layout ————————————————————– */ /* LAYOUT: Two columns DESCRIPTION: Two-column fixed layout with one sidebar right of content */ #container { float: left; margin: 0 -240px 0 0; width: 149%; } #content { margin: 0 280px 0 20px; } #primary, #secondary { float: right; overflow: hidden; width: 220px; } #secondary { clear: right; } #footer { clear: both; width: 100%; } /* LAYOUT: One column, no sidebar DESCRIPTION: One centered column with no sidebar */ .one-column #content { margin: 0 auto; width: 640px; } /* LAYOUT: Full width, no sidebar DESCRIPTION: Full width content with no sidebar; used for attachment pages */ .single-attachment #content { margin: 0 auto; width: 900px; } /* =Fonts ————————————————————– */ body, input, textarea, .page-title span, .pingback a.url { font-family: Raleway,’Helvetica Neue’,Helvetica,sans-serif; } h3#comments-title, h3#reply-title, #access .menu, #access div.menu ul, #cancel-comment-reply-link, .form-allowed-tags, #site-info, #site-title, #wp-calendar, .comment-meta, .comment-body tr th, .comment-body thead th, .entry-content label, .entry-content tr th, .entry-content thead th, .entry-meta, .entry-title, .entry-utility, #respond label, .navigation, .page-title, .pingback p, .reply, .widget-title, .wp-caption-text { font-family: “Helvetica Neue”, Arial, Helvetica, “Nimbus Sans L”, sans-serif; } input[type=submit] { font-family: “Helvetica Neue”, Arial, Helvetica, “Nimbus Sans L”, sans-serif; } pre { font-family: “Courier 10 Pitch”, Courier, monospace; } code { font-family: Monaco, Consolas, “Andale Mono”, “DejaVu Sans Mono”, monospace; } /* =Structure ————————————————————– */ /* The main theme structure */ #access .menu-header, div.menu, #colophon, #branding, #main, #wrapper { margin: 0 auto; /*width: 940px;*/ } #wrapper { background: none repeat scroll 0 0 #FFFFFF; border: 1px solid #CCCCCC; border-radius: 10px 10px 10px 10px; padding: 0 15px; } /* Structure the footer area */ #footer-widget-area { overflow: hidden; } #footer-widget-area .widget-area { float: left; margin-right: 20px; width: 220px; } #footer-widget-area #fourth { margin-right: 0; } #site-info { float: left; font-size: 14px; font-weight: bold; width: 700px; } #site-generator { float: right; width: 220px; } /* =Global Elements ————————————————————– */ /* Main global ‘theme’ and typographic styles */ body { background: #f1f1f1; background-attachment: fixed; } body, input, textarea { color: #666; font-size: 12px; line-height: 18px; } hr { background-color: #e7e7e7; border: 0; clear: both; height: 1px; margin-bottom: 18px; } /* Text elements */ p { margin-bottom: 18px; } ul { list-style: square; margin: 0 0 18px 1.5em; } ol { list-style: decimal; margin: 0 0 18px 1.5em; } ol ol { list-style: upper-alpha; } ol ol ol { list-style: lower-roman; } ol ol ol ol { list-style: lower-alpha; } ul ul, ol ol, ul ol, ol ul { margin-bottom: 0; } dl { margin: 0 0 24px 0; } dt { font-weight: bold; } dd { margin-bottom: 18px; } strong { font-weight: bold; } cite, em, i { font-style: italic; } big { font-size: 131.25%; } ins { background: #ffc; text-decoration: none; } blockquote { font-style: italic; padding: 0 3em; } blockquote cite, blockquote em, blockquote i { font-style: normal; } pre { background: #f7f7f7; color: #222; line-height: 18px; margin-bottom: 18px; padding: 1.5em; } abbr, acronym { border-bottom: 1px dotted #666; cursor: help; } sup, sub { height: 0; line-height: 1; position: relative; vertical-align: baseline; } sup { bottom: 1ex; } sub { top: .5ex; } input[type=”text”], textarea { background: #f9f9f9; border: 1px solid #ccc; } a:link { color: #0066cc; } a:visited { /* color: #743399; */ } a:active, a:hover { color: #ff4b33; } /* Text meant only for screen readers */ .screen-reader-text { position: absolute; left: -9000px; } /* =Header ————————————————————– */ #header { padding: 10px 0 0 0; } #site-title { float: left; font-size: 30px; line-height: 36px; margin: 0; } #site-title a { text-decoration: none; color: #000; font-size: 20px; font-weight: 100; font-family: Raleway,’Helvetica Neue’,Helvetica,sans-serif; text-transform: uppercase; } #site-description { clear: right; float: right; font-style: italic; margin: 15px 0 18px 0; font-size: 23px; font-family: Georgia, sans-serif; } /* This is the custom header image */ #branding img { border-top: 4px solid #000; border-bottom: 1px solid #000; display: block; float: left; } /* =Menu ————————————————————– */ #access { background: #000; display: block; float: left; margin: 0 auto; width: 940px; } #access .menu-header, div.menu { font-size: 13px; margin-left: 12px; width: 928px; } #access .menu-header ul, div.menu ul { list-style: none; margin: 0; } #access .menu-header li, div.menu li { float: left; position: relative; } #access a { color: #aaa; display: block; line-height: 38px; padding: 0 10px; text-decoration: none; } #access ul ul { box-shadow: 0px 3px 3px rgba(0,0,0,0.2); -moz-box-shadow: 0px 3px 3px rgba(0,0,0,0.2); -webkit-box-shadow: 0px 3px 3px rgba(0,0,0,0.2); display: none; position: absolute; top: 38px; left: 0; float: left; width: 180px; z-index: 99999; } #access ul ul li { min-width: 180px; } #access ul ul ul { left: 100%; top: 0; } #access ul ul a { background: #333; line-height: 1em; padding: 10px; width: 160px; height: auto; } #access li:hover > a, #access ul ul :hover > a { background: #333; color: #fff; } #access ul li:hover > ul { display: block; } #access ul li.current_page_item > a, #access ul li.current-menu-ancestor > a, #access ul li.current-menu-item > a, #access ul li.current-menu-parent > a { color: #fff; } * html #access ul li.current_page_item a, * html #access ul li.current-menu-ancestor a, * html #access ul li.current-menu-item a, * html #access ul li.current-menu-parent a, * html #access ul li a:hover { color: #fff; } /* =Content ————————————————————– */ #main { clear: both; overflow: hidden; /*padding: 40px 0 0 0;*/ } #content { margin-bottom: 36px; } #content, #content input, #content textarea { color: #333; font-size: 16px; line-height: 24px; } #content p, #content ul, #content ol, #content dd, #content hr { margin-bottom: 24px; font-family: Verdana,Arial,Geneva,Helvetica,sans-serif; font-size: 0.75em; } #content ul ul, #content ol ol, #content ul ol, #content ol ul { margin-bottom: 0; } #content pre, #content kbd, #content tt, #content var { font-size: 15px; line-height: 21px; } #content code { font-size: 13px; } #content dt, #content th { color: #000; } #content h1, #content h2, #content h3, #content h4, #content h5, #content h6 { color: #009BC1; line-height: 1.5em; margin: 0 0 20px 0; } #content table { border: 1px solid #e7e7e7; margin: 0 -1px 24px 0; text-align: left; width: 100%; } #content tr th, #content thead th { color: #888; font-size: 12px; font-weight: bold; line-height: 18px; padding: 9px 24px; } #content tr td { border-top: 1px solid #e7e7e7; padding: 6px 24px; } #content tr.odd td { background: #f2f7fc; } .hentry { margin: 0 0 48px 0; } .home .sticky { background: #f2f7fc; border-top: 4px solid #000; margin-left: -20px; margin-right: -20px; padding: 18px 20px; } .single .hentry { margin: 0 0 36px 0; } .page-title { color: #000; font-size: 14px; font-weight: bold; margin: 0 0 36px 0; } .page-title span { color: #333; font-size: 16px; font-style: italic; font-weight: normal; } .page-title a:link, .page-title a:visited { color: #888; text-decoration: none; } .page-title a:active, .page-title a:hover { color: #ff4b33; } #content .entry-title { color: #009BC1; font-size: 170%; font-weight: 100; margin-bottom: 0; font-family: Raleway,’Helvetica Neue’,Helvetica,sans-serif; } .entry-title a:link, .entry-title a:visited { color: #009BC1; text-decoration: none; font-family: Raleway,’Helvetica Neue’,Helvetica,sans-serif; font-size: 100%; font-weight: 100; } .entry-title a:active, .entry-title a:hover { color: #ff4b33; } .entry-meta { color: #888; font-size: 12px; } .entry-meta abbr, .entry-utility abbr { border: none; } .entry-meta abbr:hover, .entry-utility abbr:hover { border-bottom: 1px dotted #666; } .entry-content, .entry-summary { clear: both; padding: 12px 0 0 0; } #content .entry-summary p:last-child { margin-bottom: 12px; } .entry-content fieldset { border: 1px solid #e7e7e7; margin: 0 0 24px 0; padding: 24px; } .entry-content fieldset legend { background: #fff; color: #000; font-weight: bold; padding: 0 24px; } .entry-content input { margin: 0 0 24px 0; } .entry-content input.file, .entry-content input.button { margin-right: 24px; } .entry-content label { color: #888; font-size: 12px; } .entry-content select { margin: 0 0 24px 0; } .entry-content sup, .entry-content sub { font-size: 10px; } .entry-content blockquote.left { float: left; margin-left: 0; margin-right: 24px; text-align: right; width: 33%; } .entry-content blockquote.right { float: right; margin-left: 24px; margin-right: 0; text-align: left; width: 33%; } .page-link { clear: both; color: #000; font-weight: bold; margin: 0 0 22px 0; word-spacing: 0.5em; } .page-link a:link, .page-link a:visited { background: #f1f1f1; color: #333; font-weight: normal; padding: 0.5em 0.75em; text-decoration: none; } .home .sticky .page-link a { background: #d9e8f7; } .page-link a:active, .page-link a:hover { color: #ff4b33; } body.page .edit-link { clear: both; display: block; } #entry-author-info { background: #f2f7fc; border-top: 4px solid #000; clear: both; font-size: 14px; line-height: 20px; margin: 24px 0; overflow: hidden; padding: 18px 20px; } #entry-author-info #author-avatar { background: #fff; border: 1px solid #e7e7e7; float: left; height: 60px; margin: 0 -104px 0 0; padding: 11px; } #entry-author-info #author-description { float: left; margin: 0 0 0 104px; } #entry-author-info h2 { color: #000; font-size: 100%; font-weight: bold; margin-bottom: 0; } .entry-utility { clear: both; color: #888; font-size: 12px; line-height: 18px; } .entry-meta a, .entry-utility a { color: #888; } .entry-meta a:hover, .entry-utility a:hover { color: #ff4b33; } #content .video-player { padding: 0; } /* =Asides ————————————————————– */ .home #content .format-aside p, .home #content .category-asides p { font-size: 14px; line-height: 20px; margin-bottom: 10px; margin-top: 0; } .home .hentry.format-aside, .home .hentry.category-asides { padding: 0; } .home #content .format-aside .entry-content, .home #content .category-asides .entry-content { padding-top: 0; } /* =Gallery listing ————————————————————– */ .format-gallery .size-thumbnail img, .category-gallery .size-thumbnail img { border: 10px solid #f1f1f1; margin-bottom: 0; } .format-gallery .gallery-thumb, .category-gallery .gallery-thumb { float: left; margin-right: 20px; margin-top: -4px; } .home #content .format-gallery .entry-utility, .home #content .category-gallery .entry-utility { padding-top: 4px; } /* =Attachment pages ————————————————————– */ .attachment .entry-content .entry-caption { font-size: 140%; margin-top: 24px; } .attachment .entry-content .nav-previous a:before { content: ‘\21900a0’; } .attachment .entry-content .nav-next a:after { content: ‘0a0\2192’; } /* =Images ————————————————————– */ /* Resize images to fit the main content area. – Applies only to images uploaded via WordPress by targeting size-* classes. – Other images will be left alone. Use “size-auto” class to apply to other images. */ img.size-auto, img.size-full, img.size-large, img.size-medium, .attachment img { max-width: 100%; /* When images are too wide for containing element, force them to fit. */ height: auto; /* Override height to match resized width for correct aspect ratio. */ } .alignleft, img.alignleft { display: inline; float: left; margin-right: 24px; margin-top: 4px; } .alignright, img.alignright { display: inline; float: right; margin-left: 24px; margin-top: 4px; } .aligncenter, img.aligncenter { clear: both; display: block; margin-left: auto; margin-right: auto; } img.alignleft, img.alignright, img.aligncenter { margin-bottom: 12px; } .wp-caption { background: #f1f1f1; line-height: 18px; margin-bottom: 20px; max-width: 632px !important; /* prevent too-wide images from breaking layout */ padding: 4px; text-align: center; border:1px solid #ccc; -moz-border-radius: 10px; -webkit-border-radius: 10px; border-radius: 10px; } .wp-caption img { margin: 5px 5px 0; } .wp-caption p.wp-caption-text { color: #888; font-size: 12px; margin: 5px; } .wp-smiley { margin: 0; } .gallery { margin: 0 auto 18px; } .gallery .gallery-item { float: left; margin-top: 0; text-align: center; width: 33%; } .gallery-columns-2 .gallery-item { width: 50%; } .gallery-columns-4 .gallery-item { width: 25%; } .gallery img { border: 2px solid #cfcfcf; } .gallery-columns-2 .attachment-medium { max-width: 92%; height: auto; } .gallery-columns-4 .attachment-thumbnail { max-width: 84%; height: auto; } .gallery .gallery-caption { color: #888; font-size: 12px; margin: 0 0 12px; } .gallery dl { margin: 0; } .gallery img { border: 10px solid #f1f1f1; } .gallery br+br { display: none; } #content .attachment img {/* single attachment images should be centered */ display: block; margin: 0 auto; } /* =Navigation ————————————————————– */ .navigation { color: #888; font-size: 12px; line-height: 18px; overflow: hidden; } .navigation a:link, .navigation a:visited { color: #888; text-decoration: none; } .navigation a:active, .navigation a:hover { color: #ff4b33; } .nav-previous { float: left; width: 50%; } .nav-next { float: right; text-align: right; width: 50%; } #nav-above { margin: 0 0 18px 0; } #nav-above { display: none; } .paged #nav-above, .single #nav-above { display: block; } #nav-below { margin: -18px 0 0 0; } /* =Comments ————————————————————– */ #comments { clear: both; font-size: 1.25em; } #comments .navigation { padding: 0 0 18px 0; } h3#comments-title, h3#reply-title { color: #000; font-size: 20px; margin-bottom: 0; } h3#comments-title { padding: 24px 0; } .commentlist { list-style: none; margin: 0; } .commentlist li.comment { border-bottom: 1px solid #e7e7e7; line-height: 24px; margin: 0 0 24px 0; padding: 0 0 0 56px; position: relative; } .commentlist li:last-child { border-bottom: none; margin-bottom: 0; } #comments .comment-body ul, #comments .comment-body ol { margin-bottom: 18px; } #comments .comment-body p:last-child { margin-bottom: 6px; } #comments .comment-body blockquote p:last-child { margin-bottom: 24px; } .commentlist ol { list-style: decimal; } .commentlist .avatar { position: absolute; top: 4px; left: 0; } .comment-author { } .comment-author cite { color: #000; font-style: normal; font-weight: bold; } .comment-author .says { font-style: italic; } .comment-meta { font-size: 12px; margin: 0 0 18px 0; } .comment-meta a:link, .comment-meta a:visited { color: #888; text-decoration: none; } .comment-meta a:active, .comment-meta a:hover { color: #ff4b33; } .commentlist .even { } .commentlist .bypostauthor { } .reply { font-size: 12px; padding: 0 0 24px 0; } .reply a, a.comment-edit-link { color: #888; } .reply a:hover, a.comment-edit-link:hover { color: #ff4b33; } .commentlist .children { list-style: none; margin: 0; } .commentlist .children li { border: none; margin: 0; } .nopassword, .nocomments { display: none; } #comments .pingback { border-bottom: 1px solid #e7e7e7; margin-bottom: 18px; padding-bottom: 18px; } .commentlist li.comment+li.pingback { margin-top: -6px; } #comments .pingback p { color: #888; display: block; font-size: 12px; line-height: 18px; margin: 0; } #comments .pingback .url { font-size: 13px; font-style: italic; } /* Comments form */ input[type=submit] { color: #333; } #respond { border-top: 1px solid #e7e7e7; margin: 24px 0; overflow: hidden; position: relative; } #respond p { margin: 0; } #respond .comment-notes { margin-bottom: 1em; } .form-allowed-tags { line-height: 1em; } .children #respond { margin: 0 48px 0 0; } h3#reply-title { margin: 18px 0; } #comments-list #respond { margin: 0 0 18px 0; } #comments-list ul #respond { margin: 0; } #cancel-comment-reply-link { font-size: 12px; font-weight: normal; line-height: 18px; } #respond .required { color: #ff4b33; font-weight: bold; } #respond label { color: #888; font-size: 12px; } #respond input { margin: 0 0 9px; width: 98%; } #respond textarea { width: 98%; } #respond .form-allowed-tags { color: #888; font-size: 12px; line-height: 18px; } #respond .form-allowed-tags code { font-size: 11px; } #respond .form-submit { margin: 12px 0; } #respond .form-submit input { font-size: 14px; width: auto; padding:5px 10px; -moz-border-radius:5px; -webkit-border-radius:5px; border-radius: 5px; border:1px solid #bbb; } /* =Widget Areas ————————————————————– */ .widget-area { padding-top: 20px; padding-left: 20px; background-color: #eee; } .widget-area ul { list-style: none; margin-left: 0; } .widget-area ul ul { list-style: square; margin-left: 1.3em; } .widget-area select { max-width: 100%; } .widget_search #s {/* This keeps the search inputs in line */ width: 133px; } .widget_search label { display: none; } .widget-container { margin: 0 0 18px 0; } .widget-title { color: #009BC1; font-weight: 100; font-size: 17px; line-height: 20px; margin-bottom: 5px; } .widget-area a:link, .widget-area a:visited { text-decoration: none; color: #333; } .widget-area a:active, .widget-area a:hover { text-decoration: underline; } .widget-area .entry-meta { font-size: 11px; } #wp_tag_cloud div { line-height: 1.6em; } #wp-calendar { width: 100%; } #wp-calendar caption { color: #222; font-size: 14px; font-weight: bold; padding-bottom: 4px; text-align: left; } #wp-calendar thead { font-size: 11px; } #wp-calendar thead th { } #wp-calendar tbody { color: #aaa; } #wp-calendar tbody td { background: #f5f5f5; border: 1px solid #fff; padding: 3px 0 2px; text-align: center; } #wp-calendar tbody .pad { background: none; } #wp-calendar tfoot #next { text-align: right; } .widget_rss a.rsswidget { color: #000; } .widget_rss a.rsswidget:hover { color: #ff4b33; } .widget_rss .widget-title img { width: 11px; height: 11px; } /* Main sidebars */ #main .widget-area ul { margin-left: 0; padding: 0 20px 0 0; font-family: Verdana, Arial, Helvetica, sans-serif; } #main .widget-area ul ul { border: none; padding: 0; font-size: 0.95em; list-style:none; } #primary { } #secondary { } /* Footer widget areas */ #footer-widget-area { } /* =Footer ————————————————————– */ #footer { margin-bottom: 20px; } #colophon { border-top: 4px solid #000; margin-top: -4px; overflow: hidden; padding: 18px 0; } #site-info { font-weight: bold; } #site-info a { color: #000; text-decoration: none; } #site-generator { font-style: italic; position: relative; } #site-generator a { background: url(images/wordpress.png) center left no-repeat; color: #666; display: inline-block; line-height: 16px; padding-left: 20px; text-decoration: none; } #site-generator a:hover { text-decoration: underline; } img#wpstats { display: block; margin: 0 auto 10px; } /* =Mobile Safari ( iPad, iPhone and iPod Touch ) ————————————————————– */ pre { -webkit-text-size-adjust: 140%; } code { -webkit-text-size-adjust: 160%; } #access, .entry-meta, .entry-utility, .navigation, .widget-area { -webkit-text-size-adjust: 120%; } #site-description { -webkit-text-size-adjust: none; } /* =Print Style ————————————————————– */ @media print { body { background: none !important; } #wrapper { clear: both !important; display: block !important; float: none !important; position: relative !important; } #header { border-bottom: 2pt solid #000; padding-bottom: 18pt; } #colophon { border-top: 2pt solid #000; } #site-title, #site-description { float: none; line-height: 1.4em; margin: 0; padding: 0; } #site-title { font-size: 13pt; } .entry-content { font-size: 14pt; line-height: 1.6em; } .entry-title { font-size: 21pt; } #access, #branding img, #respond, .comment-edit-link, .edit-link, .navigation, .page-link, .widget-area { display: none !important; } #container, #header, #footer { margin: 0; width: 100%; } #content, .one-column #content { margin: 24pt 0 0; width: 100%; } .wp-caption p { font-size: 11pt; } #site-info, #site-generator { float: none; width: auto; } #colophon { width: auto; } img#wpstats { display: none; } #site-generator a { margin: 0; padding: 0; } #entry-author-info { border: 1px solid #e7e7e7; } #main { display: inline; } .home .sticky { border: none; } } #searchform input { border:1px solid #ccc; }

How to Check if a Date is More or Less Than a Month Ago with PHP

Let’s say we have the following problem: we have to check
whether a date is more than a month ago or less than a month ago. Many
developers go in the wrong direction by calculating the current month
and then subtracting the number of months from it. Of course, this
approach is slow and full of risks of allowing bugs. Since, two months
before January, which is the first month of the year, is actually
November, which is the eleventh month. Because of these pitfalls, this
approach is entirely wrong.

strtotime() is a lot more powerful than you think!

strtotime() is a lot more powerful than you think!

The question is whether PHP cannot help us with built-in functions to
perform these calculations for us. It is obvious, that from version
5.3.0 and later, there is an OOP section, which is great, but
unfortunately this version is still not updated everywhere. So, how to
accomplish the task?

The Wrong Approach

As I said, there are many ways to go in the wrong direction. One of
them is to subtract 30 days from current date. This is completely wrong,
because not every month has 30 days. Here, some developers will begin
to predefine arrays to indicate the number of days in each month, which
then will be used in their complicated calculations. Here is an example
of this wrong approach.

echo date('Y-m-d', strtotime(date('Y-m-d')) - 60*60*24*30);

This line is full of mistakes. First of all strtotime(date(‘Y-m-d’)) can be replaced by the more elegant strtotime(‘now’), but for this later. Another big mistake is that 60*60*24*30, which is number of seconds in 30 days can be predefined as a constant. Eventually the result is wrong, because not every month has 30 days.

The Correct Approach

A small research of the problem and the functions in versions prior
of 5.3.0 of PHP is needed. Typical case study of date formatting happen
when working with dates from a database. The following code is a
classical example.

// 2008 05 23, 2008-05-23 is stored into the DB
echo date('Y m d', strtotime('2008-05-23'));
 
// 2008 May 23
echo date('Y F d', strtotime('2008-05-23'));

The problem, perhaps, is that too often strtotime() is used like this, with exactly this type of strings. However much more interesting is that strtotime() can do much more.

strtotime() Can Do Much More

Let us first look at the documentation of this function. What parameters it accepts?

int strtotime ( string $time [, int $now = time() ] )

The function expects to be given a string containing an
English date format and will try to parse that format into a Unix
timestamp (the number of seconds since January 1 1970 00:00:00 UTC),
relative to the timestamp given in now, or the current time if now is
not supplied.

In particular we are interested in the first parameter, time.

time – A date/time string. Valid formats are explained in Date and Time Formats.

It is especially important to note what are the valid Date and Time Formats.
Here are the supported formats, but most interesting are those that are Relative.
Exactly these formats are very convenient in our case, because they
give us the ability to work with human readable strings, and here are
some examples from the documentation of strtotime().

echo strtotime("now"), "\n";
echo strtotime("10 September 2000"), "\n";
echo strtotime("+1 day"), "\n";
echo strtotime("+1 week"), "\n";
echo strtotime("+1 week 2 days 4 hours 2 seconds"), "\n";
echo strtotime("next Thursday"), "\n";
echo strtotime("last Monday"), "\n";

Thus, a valid string would be “1 month ago”.

// if current date is 2011-11-04, this will return 2011-10-04
echo date('Y-m-d', strtotime('1 month ago'))

Or “-1 month”:

// the same as the example above
echo date('Y-m-d', strtotime('-1 month'));

It’s interesting that “+1 -1 month” is also a valid string.

// 2011-10-04, if today's 2011-11-04
echo date('Y-m-d', strtotime('+1 -1 month'));

In fact strtotime() can do a lot more than most of the developers
have ever imagined. Maybe its frequent use with string formatted dates
(2010-01-13) makes it a bit unknown. Here are some interesting use
cases.

// 1970-01-01, Calculations in braces are bad!
echo date('Y-m-d', strtotime('(60*60) minute'));
 
// 2 months into the future
echo date('Y-m-d', strtotime('-2 months ago'));

For instance, do you know how to get the date of the day before
yesterday? Yes 2 days before today, but here’s yet another solution.

// 1 day before yesterday
echo date('Y-m-d', strtotime('yesterday -1 day'));

Another example is the fully human readable:

// get the first monday of the current month
echo date('Y-m-d', strtotime('first monday this month'));

The Solution of the Task

Finally, what is the solution of the original task? Well, just have to check whether a date is more or less than a month ago.

// a random date
$my_date = '2011-09-23';
 
// true if my_date is more than a month ago
(strtotime($my_date) < strtotime('1 month ago'))

basics of Node.js

I am a newbie in this kind of stuff but lately I’ve been hearing a lot about how good NodeJS is. Considering how much I love working with jQuery and Javascript in general, I can’t help but wonder how to decide when to use NodeJS. The web application I have in mind is something like bit.ly – takes some content, archives it.
From all the homework I have been doing in the last few days, I obtained the following information. NodeJS

  • is a command-line tool that can be run as a regular web server and lets one run Javascript programs
  • utilizes the great V8 JS engine
  • is very good when you need to do several things at the same time
  • is event-based so all the wonderful Ajax like stuff can be done on the server side
  • lets us share code between the browser and the backend
  • lets us talk with MySQL

Some of the sources that I have come across are:

Considering that NodeJS can be run almost out-of-the-box on Amazon’s EC2 instances, I am trying to understand what type of problems require NodeJS as opposed to any of the mighty kings out there like php, python and ruby. I understand that it really depends on the expertise one has on a language but my question falls more into the general category of: When to use a particular framework and what type of problems is it particularly suited for?

PHP Number and strings validations

1. to check a valid phone number for Pakistan e.g 03001234567

    $number_pattern=”/^3[0-9]{9}$/”;
    $phoneNumber=03465315155
    $numberFormat = preg_match($Msisdn_pattern , $phoneNumber);

2. Format a number for proper usage

    $phoneNumber=03465315155;
    $phoneNumber=’0092′.substr($_REQUEST[“M”],-10);

   

Read/Write a file through Oracle dataBase And UTL FILE

1. Craete a virtual directory by going to

   ServerIP/em -> Schema ->Directory Objects   Named UNESCO_PHONE_BOOK

2. Name of procedure : rowcount

(v_file_name varchar2,v_group_id number)            
IS 
    f utl_file.file_type; 
    s varchar2(200); 
n number := 0; 
v_sql varchar2(500);                            
R_FILE UTL_FILE.FILE_TYPE;                            
W_FILE UTL_FILE.FILE_TYPE;                            
R_File_content varchar2(250);                            
Mobile_no varchar2(100);                     
v_msisdn varchar2(100);                
c_name varchar2(250);                           
mob number;                        
   NOTFOUND_ERROR EXCEPTION;      
   NUMBER_FORMAT EXCEPTION;      
   MSISDN_LENGTH EXCEPTION;      

begin 
          
        R_FILE := UTL_FILE.FOPEN(‘UNESCO_PHONE_BOOK’,v_file_name, ‘R’);                             
    W_FILE := UTL_FILE.FOPEN(‘UNESCO_PHONE_BOOK’,v_file_name||’.bad’, ‘W’);                             
        –f := utl_file.fopen(‘UNESCO_PHONE_BOOK’,v_file_name,’R’); 
    loop 
        utl_file.get_line(R_FILE,R_File_content); 

        
    if R_File_content is not null  then
begin
–UTL_FILE.PUT_LINE (W_FILE, ‘ test\n’);   
        Mobile_no:=replace(substr(R_File_content,0,instr(R_File_content,’,’)-1),’ ‘,”);                          
        mob := replace(to_number(Mobile_no),’ ‘,”);                     
        DBMS_OUTPUT.PUT_LINE(substr(Mobile_no,0,3)|| ‘    ‘|| length(Mobile_no));        
        SELECT msisdn into v_msisdn from WHITELIST where msisdn=Mobile_no;       
        IF (substr(Mobile_no,0,3)<>’030′  )THEN                         
            raise NUMBER_FORMAT;                         
        END IF;                       
        IF (length(Mobile_no) <> 11)THEN                         
            raise MSISDN_LENGTH;                         
        END IF;                                    
        c_name := substr(R_File_content,instr(R_File_content,’,’)+1);                           
        DBMS_OUTPUT.put_line( trim(Mobile_no)||’-‘||c_name||’-‘||v_group_id);           
        insert into LEARNERS (MSISDN, NAME, GROUP_ID)  values (trim(Mobile_no),c_name,v_group_id);                                     
        commit; 
        EXCEPTION                        
            WHEN NO_DATA_FOUND THEN 
            DBMS_OUTPUT.PUT_LINE(‘Error’||sqlcode);        
            UTL_FILE.PUT_LINE (W_FILE,R_File_content|| ‘ ——Does Not exist in Whitelist’);    
            
            WHEN NUMBER_FORMAT THEN             
                          DBMS_OUTPUT.PUT_LINE(‘Error’||sqlcode);        
              UTL_FILE.PUT_LINE (W_FILE, R_File_content||’ ——–MSISDN Format is wrong’);                      
 
            WHEN MSISDN_LENGTH THEN             
                          DBMS_OUTPUT.PUT_LINE(‘Error’||sqlcode);        
              UTL_FILE.PUT_LINE (W_FILE, R_File_content||’ ——–MSISDN Length is wrong’);               
 
            WHEN DUP_VAL_ON_INDEX THEN             
                          DBMS_OUTPUT.PUT_LINE(‘Error’||sqlcode);        
              UTL_FILE.PUT_LINE (W_FILE, R_File_content||’ ——– Duplicate MSISDN ‘);                      
 
            WHEN OTHERS THEN             
                          DBMS_OUTPUT.PUT_LINE(‘Error’||sqlcode);        
              UTL_FILE.PUT_LINE (W_FILE, R_File_content||’ Other’);              
 
            
end;
        –n := n+1;  

    end if; 
        –dbms_output.put_line(R_File_content); 
    end loop; 
exception 
    when NO_DATA_FOUND then 
    –dbms_output.put_line(‘no of lines:’||n); 
        utl_file.fclose(R_FILE);  
        utl_file.fclose(W_FILE); 
end;

3. To execute :

   exec rowcount(‘120308155704msisdn.txt’,1);

where txt file is the file we jus uploaded and want to read

4.Tables Used:

    LEARNERS
       Name                                      Null?    Type
       —————————————– ——– —————————-
       MSISDN                                    NOT NULL VARCHAR2(11)
       NAME                                               VARCHAR2(20)
       GROUP_ID                                           NUMBER(10)
   WHITELIST
   Name                                      Null?    Type
    —————————————– ——– —————————-
    MSISDN                                             VARCHAR2(11)

Some nice jquery plugins

1. jquery count down timer : http://keith-wood.name/countdown.html
“A jQuery plugin that sets a division or span to show a countdown to a given time”

2.jquery tooltips : http://file.urin.take-uma.net/jquery.balloon.js-Demo.html#
    “A jQuery plugin to add balloon tips to elements User-friendly, fine-tunable and without css and images. Simple Tooltips


3. on demand loading contents : http://andersonferminiano.com/jqueryscrollpagination/&nbsp;
     “jQuery ScrollPagination plugin has been for loading the contents on demand based on your scrolling ” 


4. masonary : http://masonry.desandro.com/
      “Masonry is a dynamic grid layout plugin for jQuery. Think of it as the flip-side of CSS floats. Whereas floating arranges elements horizontally then vertically, Masonry arranges elements vertically, positioning each element in the next open spot in the grid. The result minimizes vertical gaps between elements of varying height, just like a mason fitting stones in a wall.

%d bloggers like this: