Whatsapp does not keep the badge number, it is the device's os functionality.
For Samsung Android device with TouchWiz launcher
Go to settings --> application manager --> all
select BadgeProvider
Click Clear Data
Click Force Stop
Restart your device
ZAC's Blog for sharing programming related stuffs, focus on free stuffs, occasionally will talk about paid solutions.
Translate
2015/07/07
2015/05/24
WhatsApp spam messages are very annoying
WhatsApp is a convenient tool, but it becomes very annoying as more and more companies use it as an advertising tools. Many unwanted messages and advertisements come from unknown numbers sending to me, WITHOUT MY CONSENT.
There are three things that I HATE most with WhatsApp
- Anyone can send me message WITHOUT MY CONSENT. They can just send message without knowing who you are.
- Anyone can add me to a group WITHOUT MY CONSENT. They only need to input my number in to the group and can force me to join the group and send me message.
- I can ONLY BLOCK a sender AFTER RECEIVING THE UNWANTED MESSAGE
These makes WhatsApp a GOOD channel for advertisement and spams. Just purchase a charge card, add a bunch of numbers sequentially, send the messages out then dispose the card. You have no way to escape from these spams and it is useless to block these sender as they are using charge card and will only use once.
Why WhatsApp cannot introduce some measures on the spam controls? Why doesn't WhatsApp give us a way to accept sender before they can send a message to us?
There is a simple way that WhatsApp can help us, just give us two options:
- ONLY ACCEPT MESSAGES FROM MY CONTACT LIST
- ONLY JOIN A GROUP WITH MY EXPLICIT ACCEPTANCE
If users like me who don't like unsolicited messages, just enabled these options. For others, they may disable these options and behaved as before.
What's your opinion?
There are three things that I HATE most with WhatsApp
- Anyone can send me message WITHOUT MY CONSENT. They can just send message without knowing who you are.
- Anyone can add me to a group WITHOUT MY CONSENT. They only need to input my number in to the group and can force me to join the group and send me message.
- I can ONLY BLOCK a sender AFTER RECEIVING THE UNWANTED MESSAGE
These makes WhatsApp a GOOD channel for advertisement and spams. Just purchase a charge card, add a bunch of numbers sequentially, send the messages out then dispose the card. You have no way to escape from these spams and it is useless to block these sender as they are using charge card and will only use once.
Why WhatsApp cannot introduce some measures on the spam controls? Why doesn't WhatsApp give us a way to accept sender before they can send a message to us?
There is a simple way that WhatsApp can help us, just give us two options:
- ONLY ACCEPT MESSAGES FROM MY CONTACT LIST
- ONLY JOIN A GROUP WITH MY EXPLICIT ACCEPTANCE
If users like me who don't like unsolicited messages, just enabled these options. For others, they may disable these options and behaved as before.
What's your opinion?
2015/05/20
How to set XE8 FD Explorer ini file Setting location
In XE8, you can find that the ini file setting location has been set as following (you can find this in the FireDAC Explorer):
Connection definition file = C:\Windows\FDConnectionDefs.ini and
Driver configuration file = C:\Windows\FDDrivers.ini
The problem is C:\Windows usually not allow for file write and that cause a problem, I CANNOT create any connection definitions.
These settings are readonly, though there is a checkbox for you to set default.
The only way that I can find to modify these location is by REGEDIT.
You can find the settings in HKEY_CURRENT_USER\Software\Embarcadero\FireDAC. Just modify the value for ConnectionDefFile and DriverFile accordingly and you will be able to save the settings.
Labels:
Embarcadero,
FireDAC,
settings,
XE8
2015/04/29
Embarcadero seems targeting linux platform
It seems Embarcadero beginning to build toolschain to target linux platform.
[ComponentPlatformsAttribute(
pidWin32
or pidWin64
or pidOSX32
or pidiOSSimulator
or pidAndroid
or pidLinux32 or pidiOSDevice
or pidiOSDevice32
or pidLinux64 or pidWinNX32
or pidWinIoT32
or pidiOSDevice64
)]
That's great but if RAD studio can be cross-platform itself, it would definitely a good news.
#embarcadero #RAD #linux #crossplatform
2015/04/25
Embarcadero RAD XE8 support SQLite encryption on iOS but not OSX
After a quick test, I found that XE8 support SQLite with encryption on iOS, too. However, OSX seems not supported as I got runtime error when running on OSX.
#embarcadero #delphi #xe8 #sqlite #encryption #ios
#embarcadero #delphi #xe8 #sqlite #encryption #ios
Labels:
Delphi,
Embarcadero,
Encryption,
iOS,
RAD Studio,
SQLite
Embarcadero RAD XE8 support sqlite encryption on android
Woo, cool. Embarcadero RAD XE8 finally support sqlite encryption on Android platform (originally only support Windows Platform. Not sure with MAC, iOS or Linux as I only test Windows and Android Platform). That's great news as people are now more concern on their data.
#Delphi #XE8 #SQLite #Encryption
#Delphi #XE8 #SQLite #Encryption
Labels:
android,
Delphi,
Embarcadero,
Encryption,
SQLite,
Windows,
XE8
2015/04/17
Embarcadero RAD XE8 Testing
Just have a chance testing with XE8. It has many improvements that make me to try it again for cross-platform development.
The most notable changes that inspire me much are:
If you want to compile RESTDebugger by yourself, just save below code as "uRESTDebuggerResStrs.pas" in the same folder of RESTDebugger source folder will be sufficient. (NB. I just copy the relevant section from XE7 code plus some new stuff with my own wording introduced in XE8).
The most notable changes that inspire me much are:
- All supported platforms have TWebBrowser component. In the past, I always need to build to the device to check for Web Browser related stuff, which is very time consuming. With TWebBrowser supports on Windows platform let me have a quick test on the app before deployment.
- FMX version of TImageList control. Though it is quite heavy weight but it is a very convenience components to add all images to the application
- 64bit iOS support (Apple requirement :( ). I love Qt, but the progress on this is a bit ...
- Box2D Physic Engine, seems interesting though I'm not developing games
- Native HTTP/HTTPS client support, no more openssl dependent. This is great as I have no need to compile openssl for different platforms
- Static SQLite library for supported platform. It seems to be able to use the OTFE database but I need to further test with
If you want to compile RESTDebugger by yourself, just save below code as "uRESTDebuggerResStrs.pas" in the same folder of RESTDebugger source folder will be sufficient. (NB. I just copy the relevant section from XE7 code plus some new stuff with my own wording introduced in XE8).
unit uRESTDebuggerResStrs;#delphi #XE8 #Embarcadero
interface
resourcestring
RSAddCustomParameter = 'Add Custom Parameter';
RSAddParameter = 'Add Parameter';
RSBytesOfDataReturnedAndTiming = '%d : %s - %d bytes of data returned. Timing: Pre: %dms - Exec: %dms - Post: %dms - Total: %dms';
RSCannotProceedWithoutRequest = 'Cannot proceed without request.';
RSComponentsCopied = 'The following components have been copied to the clipboard: %s';
RSConfirmClearRecentRequests = 'Are you sure that you want to clear list of the most recent requests?';
RSConfirmDeleteCustomParameter = 'Are you sure you want to delete the custom parameter?';
RSContentIsNotJSON = 'Content is not JSON';
RSContentIsValidJSON = 'Content is valid JSON';
RSEditCustomParameter = 'Edit Custom Parameter';
RSEditParameter = 'Edit Parameter';
RSInvalidRootElement = 'Invalid root element';
RSNoCustomParameterSelected = 'No custom parameter selected.';
RSProvideAuthCode = 'Authenication Code';
RSProvideAuthEndPoint = 'Authenication End Point';
RSProvideClientID = 'Client Id';
RSProvideClientIDAndClientSecret = 'Client Id and Client Secret';
RSProvideTokenEndPoint = 'Token End Point';
RSProxyServerDisabled = 'Proxy-server disabled';
RSProxyServerEnabled = 'Proxy-server enabled: ';
RSRootElementAppliesToJSON = 'Root Element, "%s" not applied. Root Element is only applied to JSON content. Content is not JSON.';
RSUnableToValidateCertifcate = 'Unable to validate certificate.';
implementation
end.
Labels:
cross platform,
Delphi,
Embarcadero,
iOS,
iOS 64bit,
openssl,
SQLite,
XE8
2014/08/17
Embarcadero RAD Studio XE6 Test (After Thought)
After testing Embarcadero RAD Studio XE6 for sometimes, here are some findings/summary of mine.
Pros:
- great for rapid prototyping
- easy to use (for simple app)
- single code base (delphi/c++) for multi-platform (FMX), Win32, Win64, Android, iOS, OSX.
- ARC for ui components (a feature that Qt already have when I first use it)
- FireDAC for easy database app creation
- REST components
- Some eye-catching features like Application Tethering, Integration with BaaS, InApp Purchase and Advertising components ...
Cons:
- some design issue. e.g. grid assume all cells with same content alignment. (Who will use a table with contents all right-justified?)
- not fully multi-platform. e.g. webbrowser not available on Windows platform
- runtime library a bit large (>30MB in release mode)
- startup time a bit long, especially for android, may be due to the large runtime library
- issue with multi-threading on iOS, got unexpected AV
- sometimes need tweaking, e.g. reorder your code execution sequence, to display properly. The most noticeable one is TWebBrowser on iOS, you need to make TWebBrowser component visible before assigning url, otherwise, the component seems invisible. Also, you need to make it invisible before you can show your other ui components as the TWebBrowser, if visible, will cover up all other components. (may be it is due to the fact that I've placed the webrowsee on a TLayout)
Some suggestions:
- Minimize the forms used in development as starting up a form takes long time, that's why I use a TLayout with TWebBrowser in the above
- TabControl may be another choice for page navigation
- One initialize your first page and postpone all other initialization process to a later time using timer, especially for android to shorten the black screen delay during startup
Labels:
android,
c++,
Delphi,
Embarcadero,
iOS,
multi-platform,
osx,
RAD Studio,
test,
Windows,
XE6
2014/07/23
Embarcadero RAD Studio XE6
There is a long time not updating this blog. As recently I have been assigned for a job to test and try developing cross-platform application using Embarcadero RAD Studio XE6.
For paid solution, it seems a great tool. But I need to investigate more.
For paid solution, it seems a great tool. But I need to investigate more.
Labels:
c++,
Delphi,
Embarcadero,
RAD Studio,
XE6
2014/06/11
Swiftkey 5 go free
http://m.androidcentral.com/swiftkey-5-goes-free-adds-number-row-emjoi-and-paid-themes
2014/04/26
Windows batch to download and make a portable JDK
I am a fan of portable apps and don't like to install stuff unless there is no other choices, as installation on Windows platform usually will introduce some unexpected "side-effect".
JDK is one of the tool that I need but don't want to install during development. I want to perform some automated tasks to set up a portable development environment (for android development). But downloading and extracting the JDK in a workable state are a bit tricky. Here is what I have performed to automate the process under Windows environment.
To automate the task using Windows batch script, you will need to acquire the following command tools first.
And lastly, double click "getJDK.bat" to start the process. After the process finished, the folder "jdk_1.7.0_55" should contain a workable JDK.
Don't forget to set the JAVA_HOME environment variable to point to your JDK folder and also add the %JAVA_HOME%\bin to the PATH environment in order to use the JDK wherever you are.
JDK is one of the tool that I need but don't want to install during development. I want to perform some automated tasks to set up a portable development environment (for android development). But downloading and extracting the JDK in a workable state are a bit tricky. Here is what I have performed to automate the process under Windows environment.
To automate the task using Windows batch script, you will need to acquire the following command tools first.
- wget.exe
- 7z.exe and 7z.dll
@echo off
"%~dp0wget.exe" --no-check-certificate -O "%~dp0jdk-7u55-windows-i586.exe" "http://download.oracle.com/otn-pub/java/jdk/7u55-b13/jdk-7u55-windows-i586.exe" --no-cookies --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie"
"%~dp07z.exe" x -y "%~dp0jdk-7u55-windows-i586.exe" -o"%~dp0jdk_1.7.0_55"
"%~dp07z.exe" x -y "%~dp0jdk_1.7.0_55\tools.zip" -o"%~dp0jdk_1.7.0_55"
del "%~dp0jdk_1.7.0_55\tools.zip"
for /r "%~dp0jdk_1.7.0_55" %%x in (*.pack) do "%~dp0jdk_1.7.0_55\bin\unpack200" "%%x" "%%x.jar"
for /r "%~dp0jdk_1.7.0_55" %%y in (*.pack) do ren "%%y" "%%~ny.pack.org"
for /r "%~dp0jdk_1.7.0_55" %%z in (*.pack.jar) do ren "%%z" "%%~nz"
for /r "%~dp0jdk_1.7.0_55" %%a in (*.pack) do ren "%%a" "%%~na.jar"
for /r "%~dp0jdk_1.7.0_55" %%y in (*.pack.org) do del "%%y"
And lastly, double click "getJDK.bat" to start the process. After the process finished, the folder "jdk_1.7.0_55" should contain a workable JDK.
Don't forget to set the JAVA_HOME environment variable to point to your JDK folder and also add the %JAVA_HOME%\bin to the PATH environment in order to use the JDK wherever you are.
2014/04/12
OpenSSL Heartbleed bug updates - compile openssl 1.0.1g using TDM-GCC
Due to the OpenSSL Heartbleed issue, you should update openssl to the latest 1.0.1g. But searching the web, there is no suitable precompile version for Windows that suit my need. So I have to get my hand dirty to compile by myself.
To compile, you need the following tools on hand.
I've install the above stuff into the following folders respectively.
All the steps below should be carried out inside the MSYS prompt, so you need to start MSYS first by double-click the msys.bat inside MSYS installation folder.
NOTE: You should not extract the openssl-1.0.1g.tar.gz with any archiver, e.g. 7zip under Windows. You should extract using the tar command inside MSYS prompt instead.
The reason why I need to have both TDM64-GCC and TDM-GCC is that I cannot find a way to tell MSYS to use x32 libraries and toolchains with TDM64-GCC. The work around is to set the PATH for different toolchains folder with different architectures.
If you don't want to compiled by yourself, you may download my precompiled openssl-1.0.1g-tdm-tdm64.7z which use tdm-gcc to build with both x32 and x64 libraries included.
Name :openssl-1.0.1g-tdm-tdm64.7z
Size :3715883 bytes
MD5 :A9D23198AA4F6A41DA7954AB7CE8ABFE
SHA1 :9E225DAA6A793618009CFD729420AD5CDEB0A38D
To compile, you need the following tools on hand.
I've install the above stuff into the following folders respectively.
- ActivePerl: c:\dev\perl
- TDM-GCC: c:\dev\tdm\x32
- TDM64-GCC: c:\dev\tdm\x64
- MSYS: c:\dev\msys
All the steps below should be carried out inside the MSYS prompt, so you need to start MSYS first by double-click the msys.bat inside MSYS installation folder.
export PATHBACKUP=$PATH
export PATH="/c/dev/tdm/x32/bin:/c/dev/perl/bin:$PATHBACKUP"
cd "/c/dev/openssl"
tar -zxvf openssl-1.0.1g.tar.gz
mv openssl-1.0.1g x32
cd x32
./Configure --prefix=$PWD/dist no-idea no-mdc2 no-rc5 shared mingw
make depend && make && make install
export PATH="/c/dev/tdm/x64/bin:/c/dev/perl/bin:$PATHBACKUP"
cd "/c/dev/openssl"
tar -zxvf openssl-1.0.1g.tar.gz
mv openssl-1.0.1g x64
cd x32
./Configure --prefix=$PWD/dist no-idea no-mdc2 no-rc5 shared mingw64
make depend && make && make install
NOTE: You should not extract the openssl-1.0.1g.tar.gz with any archiver, e.g. 7zip under Windows. You should extract using the tar command inside MSYS prompt instead.
The reason why I need to have both TDM64-GCC and TDM-GCC is that I cannot find a way to tell MSYS to use x32 libraries and toolchains with TDM64-GCC. The work around is to set the PATH for different toolchains folder with different architectures.
If you don't want to compiled by yourself, you may download my precompiled openssl-1.0.1g-tdm-tdm64.7z which use tdm-gcc to build with both x32 and x64 libraries included.
Name :openssl-1.0.1g-tdm-tdm64.7z
Size :3715883 bytes
MD5 :A9D23198AA4F6A41DA7954AB7CE8ABFE
SHA1 :9E225DAA6A793618009CFD729420AD5CDEB0A38D
2014/03/28
Microsoft Office for Android is now Free
Microsoft just announce that their Office for Android is now FREE. No need to subscribe for their 360 cloud service to use now.
http://techtradition.blogspot.com/2014/03/microsoft-office-for-android-is-now-free.html?m=1
EcereSDK 0.44.09.0 Portable with OpenSSL (shared and static)
Finally have time to play with EcereSDK. In my own opinion, it is more convenience than Qt.
There already have portable versions around, the EcereSDKPortable by Ryoanji. However, it is based on 0.44 SDK two years ago without any new updates. So, I decided to build my own portable version for the latest 0.44.09.9 as of my writing. Instead of using Mingw-w64, I have chosen TDM-GCC.
Thanks to Ecere Teams' efforts, building the SDK on Windows platform is very easy and fast, no quirks needed. Just download the sdk source, the toolchains and upx. Open a command prompt with administrator right and set up the corresponding path. Finally run "mingw32-make" will do the job. As I am building a portable sdk, I did not run "mingw32-make install".
This only takes me around half an hour to build the sdk with a fully functional ide. And it only that me another half hour to build the static libraries as well. That's a big contrast with Qt.You may argue that Qt may be much more powerful, e.g. they have include QML, WebKit, JavaScript engine, ... and others. But the size and time to take for building Qt just not my cup of tea as I just want a simple tools to create cross-platform applications.
After building the SDK, it is time for me to really play with the eC language.
If you are interested to my build, you can find the final products and the corresponding tools at EcereSDK Portable.
2014/04/01
NOTE: Due to unknown reason, in order to debug your project, you need to copy the gdb.exe as x86_64-w64-mingw32-gdb.exe under EcereSDKPortable\tdm\bin. It seems the ide cannot recognize the existence of gdb.exe (in version 0.44.08, I did not need to do this steps).
2014/04/02
NOTE: You will also need to download the gdb for x32 to debug the x32 version of your project. Save the gdb.exe as i686-w64-mingw32-gdb.exe under EcereSDKPortable\tdm\bin. This gdb.exe require libexpat-1.dll in the same folder, and jit-reader.h under EcereSDKPortable\tdm\include\gdb.
- Size is small
- Easier to build than Qt
- The SDK is more portable
There already have portable versions around, the EcereSDKPortable by Ryoanji. However, it is based on 0.44 SDK two years ago without any new updates. So, I decided to build my own portable version for the latest 0.44.09.9 as of my writing. Instead of using Mingw-w64, I have chosen TDM-GCC.
Thanks to Ecere Teams' efforts, building the SDK on Windows platform is very easy and fast, no quirks needed. Just download the sdk source, the toolchains and upx. Open a command prompt with administrator right and set up the corresponding path. Finally run "mingw32-make" will do the job. As I am building a portable sdk, I did not run "mingw32-make install".
This only takes me around half an hour to build the sdk with a fully functional ide. And it only that me another half hour to build the static libraries as well. That's a big contrast with Qt.You may argue that Qt may be much more powerful, e.g. they have include QML, WebKit, JavaScript engine, ... and others. But the size and time to take for building Qt just not my cup of tea as I just want a simple tools to create cross-platform applications.
After building the SDK, it is time for me to really play with the eC language.
If you are interested to my build, you can find the final products and the corresponding tools at EcereSDK Portable.
- EcereSDKPortable-0.44.09.9_tdmgcc-4.7.1-3_openssl-1.0.0e.7z: Just extract the file (preserve folder structure) to any folder you want. After unzip, run "<FolderForExtraction>\EcereSDKPortable\ide.bat" to start using the tools.
- EcereSDKPortable-0.44.09.9_tdmgcc-4.7.1-3_openssl-1.0.0e_build_script.7z: This contains the Windows batch script, tools (7z.exe and wget.exe) and some supporting files. The batch file is handcrafted by myself and may contains errors not trapped. What the script doing is using wget to grab the files required to build the SDK from their original site (you can find the location inside the batch file with variable urlXXX. If you cannot find the files in the original web site, a copy of them can be found in the same folder as well. The script just build the x32 and x64 shared version of the SDK. Static libs and SQLCipher drivers (shared and static) required to use the IDE to build as I cannot find ways to just using command line to build all the stuff. If anyone has any idea on how to do all the stuff with Windows command line, please share with me so that I can perform some fully automated build testing stuff.
2014/04/01
NOTE: Due to unknown reason, in order to debug your project, you need to copy the gdb.exe as x86_64-w64-mingw32-gdb.exe under EcereSDKPortable\tdm\bin. It seems the ide cannot recognize the existence of gdb.exe (in version 0.44.08, I did not need to do this steps).
2014/04/02
NOTE: You will also need to download the gdb for x32 to debug the x32 version of your project. Save the gdb.exe as i686-w64-mingw32-gdb.exe under EcereSDKPortable\tdm\bin. This gdb.exe require libexpat-1.dll in the same folder, and jit-reader.h under EcereSDKPortable\tdm\include\gdb.
2014/03/14
Hole In WhatsApp For Android Lets Hackers Steal Your Conversations
Hole In WhatsApp For Android Lets Hackers Steal Your Conversations
That's awful!! But the most awful part is the hole has been known a long time ago which I only recognized recently. Though its an issue related to android's sandbox architecture, I think WhatsApp should implement another security measure so that we can use it more comfortably.
That's awful!! But the most awful part is the hole has been known a long time ago which I only recognized recently. Though its an issue related to android's sandbox architecture, I think WhatsApp should implement another security measure so that we can use it more comfortably.
2014/03/11
WhatsApp interesting new feature
WhatsApp 2.11.186 Update Offers New Privacy Settings, 'Pay For A Friend,' And More
You can pay for your friend's WhatsApp subscriptions!!
And finally, Android users can manipulate their "last seen" settings.
You can pay for your friend's WhatsApp subscriptions!!
And finally, Android users can manipulate their "last seen" settings.
2014/02/20
2014/02/18
2014/01/22
Ecere SDK
This is an interesting cross-platform sdk (http://www.ecere.com). It is c with object, like c++. But seems easier to learn and code than c++. It should build fine on Linux, on Windows with MinGW or MinGW-w64 or TDM-GCC, on Mac OS X with Xcode command line tools installed or on FreeBSD (with gmake). Executables can also be deployed to the Android platform using the Android NDK.
The SDK includes complete development environment for coding and GUI designer, supports including c and c++ code as part of the project and got cross-platform GUI toolkit with 2D and 3D graphic engines, though the GUI components are somewhat primitive.
The runtime component covers file access, multithreading, time and networking (with SSL Sockets support through OpenSSL). With the EDA (Ecere Data Access) components, you will be able to access Ecere RDBMS, SQLite (as well as an encrypted version using SQLiteCipher), and Oracle databases. It also has a simple report engine with preview support. The runtime libraries size is below 10MB.
The most impressive thing is, the Ecere SDK is Free Open Source Software licensed under a revised BSD license which allows applications built with it can be distributed both commercially and non
commercially, along with the supporting Ecere runtime library(ies).
commercially, along with the supporting Ecere runtime library(ies).
Labels:
2D,
3D,
android,
BSD License,
c,
c++,
cross platform,
eC,
Ecere,
IDE,
MinGW,
mingw-w64,
openssl,
Oracle,
osx,
report engine,
SQLite,
SQLiteCipher,
tdc-gcc,
Windows
2014/01/03
Compile Qt 5.2.0 with ICU
Finally find a way to compile Qt 5.2.0 with ICU. It seems the PATH, LIBS and INCLUDE environment variable somehow being reset/ignore during the build process. So, in order to help the compiler and/or linker to find ICU libraries, I've copied all the ICU development files to Qt source tree and the compiler and/or linker now recognized the existence of ICU libraries and build Qt 5.2.0 shared version successfully with WebKit support.
Subscribe to:
Posts (Atom)