Anaconda vs Sublimelinter with Jedi for SublimeText

SublimeText is undoubtedly one of the most popular editor right now over million of software / web developers. The developer is using SublimeText as IDE usually, rather than using as plain text editor,  by making  IDE like features with the help from some great packages  available in free of cost.  For python development environment, Anaconda is all-in-one package for transforming to be IDE, in the other hand Sublimtelinter with Jedi combination one of the best method for enabling sublimetext to provide IDE like features. Both two have pros and cons, i will discuss bellows about my experiences for both.

Anaconda

Pros

  1. Most importantly, this all-in-one kind package and with no dependency, that means you don’t have headache to install multiple packages and separate configurations.
  2. Easy configuration and well documented.
  3. Numbers of active contributors and continuous development, see details
  4. Very faster linting process after introducing json server.
  5. McCabe code complexity checker

Cons

  1. Some time I discovered old problem come again with latest version, that is hanging on my sublimetext (may be one of the cause could be for big file (more than ten thousands of line)).
  2. There is no support for flake8, see discussion here. Although  anaconda linting is working with pyflake and pep8 combinely means likely to be same as flake8, but more just pyflake and pep8, flake8 has lots of cool plugins, you will miss those.
  3. Working with json server might easy, depends on Operating System you are using.

Sublimelinter and Sublime-Jedi

Pros

  1. This combination approach is like that you gather all good packages and using it. Sublimelinter is the best linting framework for SublimeText, in the other hand Jedi is one the best autocomplete library that is welly ported to Sublime, thanks author of SublimeJedi
  2. Jedi provides nice (CTRL+SHIFT+G) explorer (Go Defination) feature, you could go to the reference import very quickly, beside you could easily add extra python package paths those will be auto included to Jedi’s sys path.
  3. Sublimelinter is framework for linting, there are lots of plugins available, for python I would like to use flake8 but you may keen to use pylint, that is also available.
  4. Sublimelinter is working very fast and also has lots of configuration options, so that you could customize as your wish.

Cors

  1. I don’t find so much negative side to using this combination. But I find there is not much development activity on Github.
  2. Some rare case, jedi might not working (not sure if it is caused by Sublimetext or jedi itself)

 

We saw the simple comparison between two approach. In my opinion for novice user, they could go with Anaconda as this is very easy to adapted and configure. But in contrast of beginner user of sublimetext, I would suggest, professional developer should definitely with go with Sublimelinter specially if he/she is a full stack developer as it (Sublimelinter) has variety of plugins for different language/markup i.e css, javascript, html, json, yml and more.

Make Anaconda powered SublimeText as powerful Python IDE for full stack development

Like so many SublimeText lovers, Me as a python developer, it is also one of the favorite editor, I am using but I would like to use  it as full featured IDE. You will find many articles, blogs about how SublimeText can be transformed as pure IDE, but here i will discussed about the most easy way to turn your sublimetext as IDE for full stack python development.

Anaconda  is the single package that is capable to make your editor (SublimeText) as IDE for python development. It has almost all IDE like features, i.e linting, autocomplete, etc. You could say this is all-in-one package, with no third party dependency like SublimeLinter . One of the positive things that it is in continuous development by involvement of many contributors, so you can report any bug/error and the highest possibility, we will get the solution. They have very good documentation as well.

Install and Configuration is easy enough, I would suggest you follow instruction  from their official site, for advanced configuration you could follow here. It is good practice that you make user specific settings those are common for all your projects. Follows are example user settings.

{
    "auto_formatting": true,
    "auto_python_builder_enabled": false,
    "anaconda_linting": true,
    "anaconda_linter_phantoms": false,
    "validate_imports": true,
    "enable_signatures_tooltip": false,
    "merge_signatures_and_doc": false,
    "pep8_max_line_length": 120
}

If you saw the example configuration above, I intentionally set the value of  `pep8_max_line_length` is 120 (default is 80), in the other hand you will see that i don’t mention the path of python interpreter because it should goes on project specific settings (*.sublime-project) if you use individual interpreter(i.e virtualenv) for each project.

{
	"build_systems":
	[
		{
			"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
			"name": "PRS:: Anaconda Python Builder",
			"selector": "source.python",
			"shell_cmd": "{virtualenv path}/bin/python -u \"$file\""
		}
	],
	"folders":
	[
		{
			"path": "."
		}
	],
	"settings":
	{
		"python_interpreter": "{virtualenv path}/bin/python"
        }
}  

If you are using buildout for your project development, we have good news for you! There is a recipe plone.recipe.sublimetext for anaconda settings, this recipe will do for you to generate project specific settings. Followings are possible buildout settings for you (but you could do add  more custom option)

[buildout]
parts += 
     sublimetext
[sublimetext]
recipe = plone.recipe.sublimetext
eggs = ${instance:eggs}
anaconda-enabled = True
anaconda-linting-enabled = True
anaconda-completion-enabled = True
anaconda-validate-imports = True

 

Essential IELTS Vocabularies

Followings are list of vocabularies, I got those while doing study for IELTS examination.

  1. explore : to find out more information
  2. keen : interested
  3. potential :  possibility
  4. nutrients : chemical (food)
  5. penetrate : to drill through
  6. teeming : filled
  7. disoriented : disabled
  8. toxin : poison
  9. devour : eat
  10. ruled out : proven impossible
  11. hostile : unfriendly
  12. trassocemic : across ocean
  13. conventional : long held
  14. creeping : moving
  15. unfettered : uncontrolled ; The impact of unfettered population growth is clear for all to see.
  16. evident : clear / easily seen ; Urbanization is now a more evident worldwide phenomenon.
  17. scarcity : shortage / lack
  18. habitation: residency / to live
  19. impact: effect
  20. utilization: usage
  21. theories: ideas / proposals
  22. phenomenon : occurrence ; Urbanization is now more evident worldwide phenomenon than previously.
  23. developments: improvements
  24. desertification: process of becoming desert
  25. inhabit: dwell
  26. unimaginable: inconceivable
  27. predict: forecast
  28. fervent: showing strong feelings
  29. teeming with: to be full of
  30. vast: ample / immense
  31. commercial: concerning business
  32. precious: prized
  33.  portable: easily transported
  34. commodity: product
  35. currency: money in terms of paper 2 coins
  36. barter: trade / exchange
  37. repels: opposes / hold back
  38. fueled: encouraged / incited
  39. gabelle: salt tax
  40. deficiency: inadequacy
  41. punished: penalized
  42. inadequate: not enough
  43. off world: outside the world
  44. far-flung: far away
  45. volunteering: offering one’s services
  46. knock-on effect: domino effect
  47. function: act / work
  48. expertise: ability
  49. favourably: approvingly
  50. prerequisites: requirements
  51. elude: to escape
  52. attributes: features
  53. detracts: takes away
  54. constitute: comprise
  55. asset: advantage
  56. impart: grant / confer
  57. harnessed: excess
  58. embraces: accepts
  59. marine : found in or produced by sea ; Red and brown algae are almost exclusively marine.
  60. exclusively : solely ; Tiger brand shirt is exclusively available at supermarket in Copenhagen.
  61. terrestrial : earthbound ; Green algae are common in freshwater and in terrestrial situations.
  62. aid : help ; With the aid of a basic research grant from Forbairt.
  63. ideal : perfect / best
  64. stimulates : provokes/encourages : Propagate in culture under red light which stimulates reproduction in our growth rooms.
  65. preliminary : initial ; Preliminary results are very encouraging.
  66. relatively : comparatively ; Species of this genus are ideal for cross-breeding studies as the males and females are tiny filamentous plants that are relatively easy to grow.
  67. utilisation : usage ; Whilst dulse and carragreen  moss are worthy sea-vegetables with history of utilization.
  68. hybrids : mixed breeds ; A study of developing fast-growing hybrids of this species by crossing species from the Atlantic and Pacific is being carried out.
  69. consumption : utilization ; What increasingly should lead to greater consumption of sea -vegetables?
  70. potential : possible/probable
  71. panacea : a solution for all difficulties
  72. cited : quoted ; Small and Medium size companies will continue to be complacent about the RoHS transition until some major company is cited for non-compliance.
  73. comply : follow :Any country that can prove a product does not comply can levy fines against the vendor.
  74. levy : impose ; Any country that can prove a product does not comply can levy fines against the vendor.
  75. complacent : self satisfied ; Small and Medium size companies will continue to be complacent about the RoHS transition.
  76. hostile : unfriendly ; The EU has banned the use of six materials that are hostile to the environment.
  77. decline : decrease
  78. integral : basic/important ; RoHS must become an integral part of a designer’s development process.
  79. a host of : a group of / numerous ; A host of technical and reliability issues remain to be sorted out in Pb-free board processing.
  80. sorted out : solved; A host of technical and reliability issues remain to be sorted out in Pb-free board processing.
  81. looked at : gave importance
  82. constraint : limitation / restrict ; A new constraint revolving around environmental compliance.
  83. obsolescence : process of becoming out of date ; Manny Marcano cited the impact of parts obsolescence, including the need to redesign older products.
  84. vendors : sellers ; Electronics vendors worldwide are working to eliminate those substances.
  85. prohibited : forbidden
  86. insurmountable : cannot be dealt with ; But these obstacles are not insurmountable.
  87. remote : distant ; In the certain areas, say remote islands like the Outer Hebrides in Scotland.
  88. spur : motivation ; The environment will ultimately be the biggest spur.
  89. disparaged :  criticised / laughed at ; Video-conferencing has been disparaged for the lack of eye-contact.
  90. transmission : conveyance
  91. viable : attainable ; They were not viable application for general public use.
  92. enhance : improve
  93. cost-effective : saving money ; It is cost-effective for business to use.
  94. not complicated : straightforward ; Operating VC equipment is not complicated.
  95. expertise : ability ; The system can also be used to take expertise anywhere in the world.
  96. image : picture
  97. efficacy : effectiveness
  98. sparsely : present in small numbers
  99. shrink : decrease in size
  100. traits : characteristics
  101. less demanding : less difficult
  102. conventional : traditional ; The conventional view is that the domestication of wolves began between 10,000 and 20,000 years ago.
  103. endangered : threatened
  104. infer : understand
  105. companionship : friendship ; The fact that our companionship with dogs now appears to go back at least 100,000 years.
  106. veterinarians : doctor for animals
  107. co-existence : existing together
  108. rely on : depend on
  109. assertion : confident statement
  110. notable : noticeable
  111. elongated : long
  112. hoax : fake
  113. abstract :  unclear
  114. irrational : illogical
  115. embedded : covered
  116. resemble : to look alike
  117. abruptly : suddenly
  118. accelerate : to speed up
  119. inhibit : hinder
  120. anomalies : outliers
  121. enigma : person / thing that is mysterious
  122. intriguing : interesting
  123. varies : differs
  124.  consequences : results
  125. conjunction : connection
  126. degrade : worsen
  127. delusion : misconception
  128. disintegrate : break apart
  129. ramification : complications
  130. finite : limited
  131. counters : argues
  132. limitless : infinite
  133. concede : admit
  134. sustain : to maintain
  135. correlation : association

LRU cache invalidation in python

I am getting sucked during writing one of unit test, because one specific function doesn’t works. After huge time spending, it is revealed that I used lru_cache that’s why it just execute one time (could be by another TestCase).

But in the test environment I need fresh result instead of serving from cache for various reasons.

After googling finally I found out real application of cache invalidation. Bellows are example

from functools import lru_cache
@lru_cache(maxsize=None)
def my_function(arg1, arg2)
   return arg1 + arg2
# Clear Cache before calling
my_function.cache_clear()
my_function(2, 2)

 

PosgreSQL `hstore` problem in django django.db.utils.ProgrammingError: type “hstore” does not exist

Migration problem while using Django‘s models Hstore fileld (posgres specific)

Django version: 1.8.3

Exception: django.db.utils.ProgrammingError: type "hstore" does not exist

Solution

  1. Create a empty migration
    1. ./manage.py makemigrations –name <migration name> <app_label> –empty
    2. example migration file.
    3. Run ./manage.py migrate
    4. No create real migration

Skype problem in Ubuntu

I have faced problems several time while trying start Skype. It doesn’t open, even trying from  terminal! instead of printing this errors
skype: symbol lookup error: /usr/lib/i386-linux-gnu/libQtOpenGL.so.4: undefined symbol: _ZNK14QWidgetPrivate17hasHeightForWidthEv

Solution

  1. Open terminal type ~$ sudo nano /etc/ld.so.conf.d/skype.conf
  2. Add this line ` /usr/lib/i386-linux-gnu/mesa/` and press Ctl+X
  3. Finally ~$ sudo ldconfig -v

* My Ubuntu version 14.04 LTS, it should work since 12.04 LTS

** Common FAQ

  • Question: I have already done above & working perfectly but when applying new updates; same problem happen.
  • Answer: Don’t panic please just follow 3 no step. ~$ sudo ldconfig -v

Credit AskUbuntu

=———————————————————–=

Another problem may facing Ubuntu user for Skype, that is Skype open just for a while and stop or could be continuous restarting. [Recently 20th Dec, 2015 I faced this problem, although my OS version is Ubuntu Server 14.04 LTS ]

Solution:

  • Make sure you have sqlite3 installed in your PC. Other than you can install it easily by following this instruction
  • Go to your terminal (CTRL + ATL +  T)
  • Precaution: The following attempts will remove all of your previous files transfer history
  • $ sqlite3 ~/.Skype/[YOURUSER}/main.db
  • > sqlite> DELETE FROM Messages WHERE type=68;
  • > .quit
  • Congratulation you are done! Try to start skype.