Git Product home page Git Product logo

typo3-dd_googlesitemap's Introduction

Google sitemaps for TYPO3

This is a "dd_googlesitemap" TYPO3 extension. You will need a TYPO3 CMS to run it.

What does it do?

This extension adds sitemaps for pages and tt_news items. Typically you add the result to Google like http://example.com/index.php?eID=dd_googlesitemap.

Make sure to read the manual in the doc/ directory before asking questions or writing bug reports. Anything, which is explained in the manual, will be silently closed without answering.

What it does not do?

Many things. It is deliberately not a "all-purpose solution". It is created to be fast and efficient. It only contains sitemaps for pages and tt_news and there are no plans to change that or do any sophisticated filtering, etc. You still can ask though :)

Repository

Main repository is at https://github.com/dmitryd/typo3_dd_googlesitemap.

Contact

E-mail: [email protected]

typo3-dd_googlesitemap's People

Contributors

a-r-m-i-n avatar dmitryd avatar georgringer avatar hannesbochmann avatar mabahe avatar mbrodala avatar michaelnussbaumergowest avatar ste101 avatar stweil avatar svenarnold avatar svenjuergens avatar t3easy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

typo3-dd_googlesitemap's Issues

Priority Number Format

In my enviroment the priority gets rendered like this:

0,5

this leads to an error at google webmastertools (priority tag contains an invalid value)

changing renderers/class.tx_ddgooglesitemap_normal_renderer.php line 77 helps:

$content .= '' . sprintf('%0.1F', $priority/10) . '';

i use the sprintf format '%0.1F' instead of '%0.1f'

now priority is rendered as:

0.5

PHP documentation says:

f - the argument is treated as a float, and presented as a floating-point number (locale aware).
F - the argument is treated as a float, and presented as a floating-point number (non-locale aware). Available since PHP 4.3.10 and PHP 5.0.3.

Backend Error when editing pages in site structure

Since updating to 6.1.8 we're having SQL errors popping up in the backend when changing the page title in the site structure.

caller: TYPO3\CMS\Core\Database\DatabaseConnection::exec_INSERTquery
ERROR: Column 'sys_log_uid' cannot be null
lastBuiltQuery: INSERT INTO sys_history (history_data,fieldlist,tstamp,tablename,recuid,sys_log_uid) VALUES ('a:2:{s:9:"oldRecord";a:1:{s:26:"tx_ddgooglesitemap_lastmod";s:54:"1399301453,1399301684,1399301697,1399449582,1399451432";}s:9:"newRecord";a:1:{s:26:"tx_ddgooglesitemap_lastmod";s:54:"1399301684,1399301697,1399449582,1399451432,1399451867";}}','tx_ddgooglesitemap_lastmod','1399451865','pages','160',NULL)
debug_backtrace: TYPO3\CMS\Backend\Controller\EditDocumentController->processData#54 // TYPO3\CMS\Core\DataHandling\DataHandler->process_datamap#470 // TYPO3\CMS\Core\DataHandling\DataHandler->hook_processDatamap_afterDatabaseOperations#1068 // tx_ddgooglesitemap_tcemain->processDatamap_afterDatabaseOperations#681 // tx_ddgooglesitemap_tcemain->recordPageChange#64 // TYPO3\CMS\Core\DataHandling\DataHandler->process_datamap#105 // TYPO3\CMS\Core\DataHandling\DataHandler->updateDB#1061 // TYPO3\CMS\Core\DataHandling\DataHandler->setHistory#5616 // TYPO3\CMS\Core\Database\DatabaseConnection->exec_INSERTquery#5752 // TYPO3\CMS\Core\Database\DatabaseConnection->debug#198

This could be related with the core bug in 6.2 ?
http://forge.typo3.org/issues/55472

set change frequency manually

It would be great if the change frequency of a page could be set manually through a database field. If the field is set than the change frequency is not calculated but taken directly from the page record.

I need this enhancement since I have pages where dynamic list of datasets are displayed. The pages themselves won't be changed often resulting in a calculated change frequency of monthly or yearly as the datasets don't reside directly on the page. But as the content is dynamically and changes often those pages need a much higher frequency. The only solution I found would be to add a new field for this. Would you mind if I provide an enhancement for this as a pull request or is there a more simple solution?

P.S. I could also add own sitemaps for the several dynamic datatypes but I think being able to set a manual change frequency would be a faster solution.

Composer install

Installing plugin via composer I'm getting following warning:

Warning: Ambiguous class resolution, "DmitryDulepov\DdGooglesitemap\Scheduler\Task" was found in both "/var/www/vhosts/dev.digitalwerk.at/wsw.dev.digitalwerk.at/typo3conf/ext/dd_googlesitemap/Classes/scheduler/Task.php" and "/var/www/vhosts/dev.digitalwerk.at/wsw.dev.digitalwerk.at/typo3conf/ext/dd_googlesitemap/Classes/Scheduler/Task.php", the first will be used.
Warning: Ambiguous class resolution, "DmitryDulepov\DdGooglesitemap\Scheduler\AdditionalFieldsProvider" was found in both "/var/www/vhosts/dev.digitalwerk.at/wsw.dev.digitalwerk.at/typo3conf/ext/dd_googlesitemap/Classes/scheduler/AdditionalFieldsProvider.php" and "/var/www/vhosts/dev.digitalwerk.at/wsw.dev.digitalwerk.at/typo3conf/ext/dd_googlesitemap/Classes/Scheduler/AdditionalFieldsProvider.php", the first will be used.

mobile sitemap renderer

A sitemap for mobile sites needs two things:
a different urlset declaration

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:mobile="http://www.google.com/schemas/sitemap-mobile/1.0">

and the (empty) tag

<mobile:mobile/>

in each declaration

Example:

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" 
xmlns:mobile="http://www.google.com/schemas/sitemap-mobile/1.0">
<url>
<loc>http://mobile.example.com/article100.html</loc>
<mobile:mobile/>
</url>
</urlset>

See: http://support.google.com/webmasters/bin/answer.py?hl=en&answer=34648

Imported from: http://forge.typo3.org/issues/42141
Author: A.L.Datenverarbeitung

PHP Warning: Invalid argument supplied for foreach() in sysext/core/Classes/Utility/RootlineUtility.php line 271

The error happens because $GLOBALS['TCA'] is not existent.

protected function enrichWithRelationFields($uid, array $pageRecord) {
    $pageOverlayFields = \TYPO3\CMS\Core\Utility\GeneralUtility::trimExplode(',', $GLOBALS['TYPO3_CONF_VARS']['FE']['pageOverlayFields']);

    foreach ($GLOBALS['TCA']['pages']['columns'] as $column => $configuration) {
        if ($this->columnHasRelationToResolve($configuration)) {
                            ...

Parsing error

Hi,
I've configured dd_googlesitemap extension in my website and added the htaccess rule
RewriteRule sitemap.xml$ /index.php?eID=dd_googlesitemap [L,R=301]

My typo3 installation is a multidomain setup and I took a domain like this;
http://www.mydomain1.com/sitemap.xml

Then it displayed a message;

XML Parsing Error: no element found
Location: http://www.mydomain1.com/sitemap.xml
Line Number 2, Column 27:
--------------------------^

Please help me to fix this error.

Thanks,
Arun Chandran

7 LTS support

It would be great if the dependencies could be updated to support 7 LTS (7.6.0).

dd_googlesitemap path as pid instead of realurl name

Hallo Dmitry,

your exension dd_googlesitemap first showed speaking URLs via realURL, some time later it shows the IDs instead of the speaking URLs. The configuration has been as follows and did not change:

page.config {
simulateStaticDocuments = 0
baseURL = http://memedix.de/
tx_realurl_enable = 1
}

Here is the sitemap: http://memedix.de/?eID=dd_googlesitemap

TYPO3 7.6.2 + realURL 1.13.5 + dd_googlesitemap 2.0.4

Do you have any idea how to fix this?

Thank you for your work for the T3 Community! Appreciate it very much!

news sitemap crdate too restrictive

The news sitemap seems to be empty if all articles are older the 48h, I think this is way to restrictive. The file class.tx_ddgooglesitemap_ttnews.php has one line
($this->isNewsSitemap ? ' AND crdate>=' . (time() - 48_60_60) : '') .
which adds this filter in case of news sitemap.
I changed it for my website from 2 days to half a year. Is there any standard which says it should be 2 days?

Multi language support question

Should the extension support multi language sitemaps for sites with a url structure like this?

Default language: http://www.domain/<page>
Second language: http://www.domain/<language code>/<page>

The url structure is created with extensions like cooluri or realurl.

typo within ext_autoload.php

The path for the news renderer should be changed from "renderes" to "renderers". Otherwise it failed on half of our servers.

Parameter to exclude tt_news categories

I think it's a good idea to have parameter to exclude special tt_news categories from google sitemap. In addition I have created a diff file in which the parameter "excludeCat" passed as array. The array has the advantage that the individual category UIDs can be validated with intval. The diff file refers to the file class.tx_ddgooglesitemap_ttnews.php

--- class.tx_ddgooglesitemap_ttnews.php-rev33290.svn000.tmp.php Mi Mai 19 10:39:46 2010
+++ C:/Users/Christian/Desktop/dd_googlesitemap/trunk/class.tx_ddgooglesitemap_ttnews.php   Sa Nov 24 21:46:36 2012
@@ -75,6 +75,13 @@
    protected $isNewsSitemap;

    /**
+    * Comma separated cat uid list
+    *
+    * @var string
+    */
+   protected $excludeCategory;
+   
+   /**
     * Single view page
     *
     * @var int
@@ -106,6 +113,16 @@
        $this->isNewsSitemap = (t3lib_div::_GET('type') === 'news');
        $rendererClass = ($this->isNewsSitemap ?
            'tx_ddgooglesitemap_news_renderer' : 'tx_ddgooglesitemap_normal_renderer');
+           
+       $excludeArray = t3lib_div::_GP('excludeCat');
+       if (is_array($excludeArray)) {
+           foreach ($excludeArray AS $excludeCat) {
+               $this->excludeCategory .= intval($excludeCat) . ',';
+           }
+           $this->excludeCategory = rtrim($this->excludeCategory, ',');
+       }
+       unset($excludeArray);
+       
        $this->renderer = t3lib_div::makeInstance($rendererClass);
    }

@@ -120,11 +137,21 @@

        if (count($this->pidList) > 0) {
            t3lib_div::loadTCA('tt_news');
-           $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('uid,datetime,keywords',
-               'tt_news', 'pid IN (' . implode(',', $this->pidList) . ')' .
-               ($this->isNewsSitemap ? ' AND crdate>=' . (time() - 48*60*60) : '') .
-               $this->cObj->enableFields('tt_news'), '', 'datetime DESC'
-           );
+           
+           if (!empty($this->excludeCategory)) {
+               $res = $GLOBALS['TYPO3_DB']->exec_SELECT_mm_query('uid,title,datetime,keywords', 
+                   'tt_news', 'tt_news_cat_mm', '', ' AND pid IN (' . implode(',', $this->pidList) . ')' .
+                   ($this->isNewsSitemap ? ' AND crdate>=' . (time() - 48*60*60) : '') . 
+                   ' AND tt_news_cat_mm.uid_foreign NOT IN (' . $this->excludeCategory . ')' . 
+                   $this->cObj->enableFields('tt_news'), '', 'datetime DESC');
+           } else {
+               $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('uid,title,datetime,keywords',
+                   'tt_news', 'pid IN (' . implode(',', $this->pidList) . ')' .
+                   ($this->isNewsSitemap ? ' AND crdate>=' . (time() - 48*60*60) : '') .
+                   $this->cObj->enableFields('tt_news'), '', 'datetime DESC'
+               );
+           }
+           
            $rowCount = $GLOBALS['TYPO3_DB']->sql_num_rows($res);
            while (false !== ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res))) {
                if (($url = $this->getNewsItemUrl($row['uid']))) {

Imported from Forge: http://forge.typo3.org/issues/43271
Author: Christian Wolfram

exclude pages and subpages

I would appreciate it if there was a way, to exclude pages with their subpages, using the page IDs in TS Setup.

Here is my workaround (tested in TYPO3 v4.7):

TS-Setup: tx_ddgooglesitemap.excludePages = 9,38,47,...

File: typo3conf\ext\dd_googlesitemap\class.tx_ddgooglesitemap_pages.php

Added code to function __construct():

$excludePages = t3lib_div::intExplode(',', $GLOBALS['TSFE']->tmpl->setup['tx_ddgooglesitemap.']['excludePages'], TRUE);
if (count($excludePages) > 0) {
$this->excludedPages = $excludePages;
// get subpages
$oSysPage = t3lib_div::makeInstance('t3lib_pageSelect');
$oSysPage->init(true);
$aSubpages = array();
foreach ($this->excludedPages AS $iPageID) {
$this->subPages($oSysPage, $aSubpages, $iPageID);
}
$this->excludedPages = array_merge($this->excludedPages,$aSubpages);
unset($aSubpages);
}

Added function:
private function subPages(&$oSysPage, &$aSubpages, $iPageID) {
$aSubpagesTemp = $oSysPage->getMenu($iPageID);
foreach ($aSubpagesTemp AS $aPage) {
$aSubpages[] = $aPage['uid'];
$this->subPages($oSysPage, $aSubpages, $aPage['uid']);
}
unset($aSubpagesTemp);
}

greets Boogie

endless - loop when a extension-specific type ignores offset and limit

Hey hey,

when having registered a new type to render a sitemap and I forget to use given offset and limit, I always return the same sitemap over and over again because in the task class it's looped until there comes no further content.

Fix:
In class.tx_ddgooglesitemap_indextask.php in method execute @ line 99 use md5_file to check whether the values in the file are the same as before. If that's true, remove the latest file and break the do-while-loop.

Greez
Sascha

dd_googlesitemap is not kompatible with actual version of naw_securedl (including quickfix)

installed versions:

TYPO3 6.2.5:
naw_securedl: 1.8.0
dd_googlesitemap: 1.3.1

if i now save any page in the Backend, the one of the two fields of dd_googlesitemap uses a testInt function i got an error message .. non existing funktion testint() in class
\Bitmotion\NawSecuredl\Compatibility\mathUtility
(as this class "t3lib_utility_Math" exists in naw_securedl and there is only a forceIntegerInRange )

as a quick solution

i changed in :
\ext\dd_googlesitemap\class.tx_ddgooglesitemap_tcemain.php

static protected function testInt($value) {
if (class_exists('\TYPO3\CMS\Core\Utility\MathUtility')) {
return \TYPO3\CMS\Core\Utility\MathUtility::canBeInterpretedAsInteger($value);
}
if (class_exists('t3lib_utility_Math')) {
/** @noinspection PhpDeprecationInspection /
return t3lib_utility_Math::canBeInterpretedAsInteger($value);
}
/
* @noinspection PhpDeprecationInspection PhpUndefinedMethodInspection */
return t3lib_div::testInt($value);
}

to:

static protected function testInt($value) {
if (t3lib_utility_VersionNumber::convertVersionNumberToInteger(TYPO3_version) >= 4900000) {
return \TYPO3\CMS\Core\Utility\MathUtility::canBeInterpretedAsInteger($value);
}
/** @noinspection PhpDeprecationInspection PhpUndefinedMethodInspection */
return t3lib_div::testInt($value);
}

Version 1.3.0 breaks scheduler in TYPO3 6.1.7

Hi!

When Version 1.3.0 of the extension is installed, I cannot create new scheduler tasks - the form for creating a scheduler task opens, but no fields are visible.

This problem is most probably caused by the extension, since uninstalling or downgrading to version 1.2.0 fixes it, upgrading to 1.3.0 again brings the problem back.

Regards,
Jost

Typo in ext_autoload.php

'tx_ddgooglesitemap_news_renderer' => $extpath . 'renderes/class.tx_ddgooglesitemap_news_renderer.php',

gives a "PHP Fatal error: require(): Failed opening required"

there is missing a "r" in "renderes", it should be "renderers":

'tx_ddgooglesitemap_news_renderer' => $extpath . 'renderers/class.tx_ddgooglesitemap_news_renderer.php',

Sitemap for tt_news without RealURL

Output of sitemap for tt_news unfortunately happens without RealURL (?eID=dd_googlesitemap&sitemap=news&pidList=36&singlePid=38). Sitemap for normal pages produced links with RealURL. Any ideas?
(TYPO3 4.5.36 / dd_googlesitemap 1.3.1 / RealURL 1.12.8)

tt_news multilanguage adds "-1" to the end of URLs

I have the problem that in the List of tt_news,
it adds a "-1" to every URL if i use "&L=1" for the second Language.

I use this Link for example:
SITENAME.com/index.php?eID=dd_googlesitemap&sitemap=news&pidList=7&singlePid=37&L=1

The List looks like:

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>
http://SITENAME.com/en/references/offshore-terminal-projects-1.html
</loc>
<lastmod>2014-05-17T15:50:00+02:00</lastmod>
</url>
<url>
...

I use also realurl, maybe a problem with realurl?
I use TYPO3 6.1.10

TYPO3 6.1.7 support needed

When installing dd_googlesitemap 1.2.0 on TYPO3 6.1.7 I get the error "Your TYPO3 version is higher than allowed. You can use TYPO3 versions 4.5.0 - 6.0.99".

forceStartPid and included TS

forceStartPid possible does not work with included TS. See discussion with SAHE on Skype from March 25 at around 15:00.

Multilanguage cache issue

I have a multilingual setup which uses the sitemap but i'm running in to a problem.
I have 2 URL's like:
be-nl.domein.com
and
be-fr.domein.com

When i open the sitemap on be-nl it will open the be-nl sitemap.
But when i go to the sitemap on be-fr it will also open be-nl sitemap.

When i clear my cache it will work on be-fr but when i open the other be-nl it will have the sitemap from be-fr instead of be-nl.

I'm a bit lost at what this problem could be.
I hope you can help me with this.

Kind regards,

Jelle

Consideration of state "Hide default translation of page"

Hi,

I have a problem with dd_googlesitemap on multilingual websites:
would it be possible to consider also the state of "Hide default translation of page" for the generated sitemaps?

In case this checkbox is active, all pages which have no proper translation should not be put into the sitemap.

Regards,
Karin

Is there a way to exclude pages?

As I cannot find this one, it's sort of a feature request.

The option to hide some pages can be very important. For example I would like to not show a dedicated 404 page in the sitemap.

Is there any option available to hide the page from the sitemap? If it is not, what would be the best way to do it? I am currently thinking about adding a checkbox like "hide from sitemap" to a page's config and offer it as a pull request. But maybe there is a better way that I don't see yet.

Make link object configurable via typoscript

When creating news sitemaps it might be cool to have month and year parameters encoded into the resulting realurl. to be able to achieve that a configurable typolink setting via typoscript instead of a hard coded array would be nice.

Something like that:

tx_ddgooglesitemap.newsLink = TEXT
tx_ddgooglesitemap.newsLink {
   typolink.forceAbsoluteUrl = 1
   typolink.returnLast = url
   typolink.parameter.field = singlePid
   typolink.additionalParams.cObject = COA
   typolink.additionalParams.cObject {
      10 = TEXT
      10.wrap = &tx_ttnews[tt_news]=|
      10.field = uid
      20 = TEXT
      20.wrap = &tx_ttnews[month]=|
      20.field = datetime
      20.strftime = %m
      30 = TEXT
      30.wrap = &tx_ttnews[year]=|
      30.field = datetime
      30.strftime = %y
   }
}

Imported from Forge: http://forge.typo3.org/issues/47059

Exception if cache is empty

While extending the sitemaps with my own generator, I found a minor problem:
if the rootline-cache is empty (f.e. if you clear the "general cache" in the backend), determineId hits an exception (calling foreach on GLOBALS['TCA']['pages']['columns'], which is empty)

This can be solved by loading the tca one step earlier:

diff --git a/Classes/Generator/EntryPoint.php b/Classes/Generator/EntryPoint.php
index 0feb1ce..02ffece 100644
--- a/Classes/Generator/EntryPoint.php
+++ b/Classes/Generator/EntryPoint.php
@@ -81,8 +81,8 @@ class EntryPoint {
                /** @var \TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController $tsfe */
                $tsfe->connectToDB();
                $tsfe->initFEuser();
-               $tsfe->determineId();
                \TYPO3\CMS\Core\Core\Bootstrap::getInstance()->loadCachedTca();
+               $tsfe->determineId();
                $tsfe->initTemplate();
                $tsfe->getConfigArray();

Hooking into the list of pages

In case one uses an extension such as EXT:restdoc, the sites may contain additional "pages" (in this very case coming from a ReStructuredText documentation). An example of such a TYPO3 website with a reST documentation integrated is available on Forge.

I don't expect much more than being able to hook into method tx_ddgooglesitemap_pages->main() or, may be better-suited, into method tx_ddgooglesitemap_pages->generateSitemapForPages().

tx_ddgooglesitemap.newslink setup doesn't work

I've tried to manipulate the typolink config for tt_news sitemaps via typoscript setup and I think that the 2nd condition part is_array($GLOBALS['TSFE']->tmpl->setup['tx_ddgooglesitemap.']['newsLink']) can never be true inside the method Classes\Generator\TtNewsSitemapGenerator::getNewsItemUr()

Isn't instead $GLOBALS['TSFE']->tmpl->setup['tx_ddgooglesitemap.']['newsLink**.**'] the right choice?

Best
Falk

hide pages "hidden in navigaton" in sitemap

I would appreciate it, if there was a way to exclude pages that are "hidden in navigation" in TS-Setup.

My workaround hardcoded:

File: typo3conf\ext\dd_googlesitemap\class.tx_ddgooglesitemap_pages.php

  1. (line 137), add field "nav_hide" in:
    $morePages = $GLOBALS['TSFE']->sys_page->getMenu($pageInfo['uid'], 'uid,doktype,no_search,l18n_cfg,SYS_LASTCHANGED,nav_hide,tx_ddgooglesitemap_lastmod,tx_ddgooglesitemap_priority','', '', false);
  2. (line 87) add condition && !$pageInfo['nav_hide'] in:
    protected function shouldIncludePageInSitemap(array $pageInfo) {
    return !$pageInfo['no_search'] && !in_array($pageInfo['doktype'], $this->excludedPageTypes) && !$pageInfo['nav_hide'];
    }

greets boogie

lastmod takes SYS_LASTCHANGED from Shortcut page instead of the target page

if there is a pagetree like this and forceStartPid is set to 3:

  • root
  • page_1
  • shortcut_to_page_4
    • page_4
    • page_5

the sitemap will contain the correct path to page_4, like "/shortcut_to_page_4/page_4" but "lastmod" of this entry is the "SYS_LASTCHANGED".value of the shortcut page with id 3 instead of id 4.

This means if you change the title of page_4 the lastmod-value is not updated!

Imported from: http://forge.typo3.org/issues/3070

Publication languange in News Sitemap (TYPO3 6.2)

I've upgraded TYPO3 from 4.7. to 6.2. The publication language now is empty. I checked the source (7Renderers/NewsSitemapRenderer.php:renderEntry()) an found: $GLOBALS['TSFE']->lang. But i don't know how this is to set.

My ts setup looks like this:

config {
    linkVars = L
    sys_language_uid = 0
    language = de
    locale_all = de_DE
    htmlTag_langKey = de
}

But this seems not to recognized by TSFE->lang. Any suggestions?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.