Wednesday, November 19, 2014

Hadoop - The Definitive Guide

Hadoop - The Definitive Guide, 3rd edition.

Just got this book over the weekend. Now reading.

The 2nd edition of this book is available here.

Reference:
[1] 15+ Great Books for Hadoop

Wednesday, November 5, 2014

How jQuery is written from scratch?

This probably helps: http://www.mikedoesweb.com/2012/creating-your-own-javascript-library/

This is a minimum javascript library whose grammar is very similar to jQuery: _('id').function(). It helps to understand how jQuery is written from scratch.

I think I can start writing a javascript library similar to jQuery now :).

Tuesday, November 4, 2014

Wikipedia management

Wikipedia is a nice open source project. However it may incur a lot of hackers' interests if it is open for edit. Hackers may register large number of spam accounts, create new pages and modify existing pages. This is what's happening to a wikipedia I'm managing right now.

Although quite straightforward, I keep log of these management tips of wikipedia.

The default settings are in wiki/includes/DefaultSettings.php. But changes to settings can be made in wiki/LocalSettings.php, the changes here will override default settings.

1) To change logo, change this line:

$wgLogo = "$wgStylePath/common/images/wiki.png";


2) To disable anonymous user (not logged in) creating new page and editing, add this to the end of LocalSettings:

#
# See: http://www.mediawiki.org/wiki/Manual:User_rights
#

#
# not-logged-in user
#
$wgGroupPermissions['*']['createaccount'] = false; # no new user registration.
//$wgGroupPermissions['*']['read']          = true;      # default is true, so no need to add this statement.
$wgGroupPermissions['*']['edit'] = false;
$wgGroupPermissions['*']['createpage'] = false;

#
# logged-in user. 
# Add this if you want to disable logged-in users from createpage/edit actions.
#
#$wgGroupPermissions['user']['edit'] = false;
#$wgGroupPermissions['user']['createpage'] = false; // true;

#
# sysop
# If you disabled logged-in users actions, you may want to enable sysop's permission here.
#
#$wgGroupPermissions['sysop']['edit'] = true;
#$wgGroupPermissions['sysop']['createpage'] = true;

After you disabled new user's createaccount ability, you will want to manually create new accounts. You can do this by logging in as sysop, and going to "Special pages -> Login / create account".

3) Email setting. Use $wgSMTP to change email setting: either use Pear Mail or PHP Mail.

Refer to the last post "Fix Bluehost wikipedia email problem".


Fix Bluehost wikipedia email problem

I'm managing a website hosted by Bluehost.com.

From CPanel I installed wikipedia. However the email function does not work. It says: "bluehost Mailer returned: Failed to add recipient: [email] … Mailer returned: Unknown error in PHP's mail() function."

I followed instruction at http://www.mediawiki.org/wiki/Manual:$wgSMTP to add email SMTP setting to wiki/LocalSettings.php:

$wgSMTP = array(
 'host'     => "mail.example.com", 
 'IDHost'   => "example.com",      
 'port'     => 26,                 
 'auth'     => true,               
 'username' => "my_user_name",     
 'password' => "my_password"       
);

Still it does not work. I followed Bluehost's email setting page, use either SSL/TLS setting or non-SSL setting. Still it fails.

Finally I tried to find out where $wgSMTP is used: grep -i wgSMTH */*, and found it being used in /wiki/includes/UserMailer.php. It comes down to the function send().  When $wgSMTP is used, it uses Pear Mail; otherwise, it uses PHP Mail. Since I'm using PHP Mail in a personal project on the same server, I tried to check what's different it uses PHP Mail from my use. On line 359 of UserMailer.php, it has this code:

foreach ( $to as $recip ) {
      if ( $safeMode ) {
          $sent = mail( $recip, self::quotedPrintable( $subject ), $body, $headers );
      } else {
          $sent = mail( $recip, self::quotedPrintable( $subject ), $body, $headers, $wgAdditionalMailParams );
      }
}

I print out $headers, it is:

From: CareerAssist Wiki Return-Path: apache@www.careerassist.org Date: Tue, 04 Nov 2014 04:41:29 -0700 Message-ID: X-Mailer: MediaWiki mailer MIME-Version: 1.0 Content-type: text/plain; charset=UTF-8 Content-transfer-encoding: 8bit

Since I'm using the PHP's mail() function in a personal project on the same server and it works well, where I simply use: $headers = "From: [email]";

So I replace the $headers here with this simpler rendition:

foreach ( $to as $recip ) {
      if ( $safeMode ) {
          $sent = mail( $recip, self::quotedPrintable( $subject ), $body, $headers );
      } else {
          $headers = "From: [email]";
          $sent = mail( $recip, self::quotedPrintable( $subject ), $body, $headers, $wgAdditionalMailParams );
      }
}

Then it works! This also shows it takes the 2nd path here ($safeMode is false).

Thus I got wikipedia email working on Bluehost, with this hack into wikipedia's source code.


Blog Archive

Followers