wmorgan / leveldb-ruby Goto Github PK
View Code? Open in Web Editor NEWRuby bindings for LevelDB
License: BSD 3-Clause "New" or "Revised" License
Ruby bindings for LevelDB
License: BSD 3-Clause "New" or "Revised" License
hi,
i installed snappy library (compression library) on my macbook pro (osx 10.7.3 + xcode 4.2.1) using homebrew
brew install snappy
which will install snappy into /usr/local/Cellar/snappy/1.0.4
homebrew adds these path to $PATH
my question is, how to get the information if snappy is used properly?
It fails to build in ree 1.8.7-2011.01, but success in RMI 1.8.7 & 1.9.2
Error messages:
Fixes, e.g., http://code.google.com/p/leveldb/issues/detail?id=3
What is the difference between the two projects?
$ sudo gem install leveldb-ruby
Fetching: leveldb-ruby-0.15.gem (100%)
Building native extensions. This could take a while...
Successfully installed leveldb-ruby-0.15
Parsing documentation for leveldb-ruby-0.15
Before reporting this, could you check that the file you're documenting
has proper syntax:
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby -c ext/leveldb/leveldb.cc
RDoc is not a full Ruby parser and will fail when fed invalid ruby programs.
The internal error was:
(RegexpError) Stack overflow in regexp matcher: /.*((?>\/\*.*?\*\/\s+))
([\w\.\s]+\s* = \s+)?rb_define_(class|module).*?"(LevelDB)"/mx
ERROR: While executing gem ... (RegexpError)
Stack overflow in regexp matcher: /.((?>/_.?_/\s+))
([\w.\s]+\s* = \s+)?rb_define_(class|module).*?"(LevelDB)"/mx
Running gem install leveldb-ruby on MacOS (10.15.7) fails with
gem install leveldb-ruby
Building native extensions. This could take a while...
ERROR: Error installing leveldb-ruby:
ERROR: Failed to build gem native extension.
current directory: /Users/studnev/.rvm/gems/ruby-2.6.3/gems/leveldb-ruby-0.15/ext/leveldb
/Users/studnev/.rvm/rubies/ruby-2.6.3/bin/ruby -I /Users/studnev/.rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0 -r ./siteconf20210520-85857-33fmh7.rb extconf.rb
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c db/builder.cc -o db/builder.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c db/c.cc -o db/c.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c db/db_impl.cc -o db/db_impl.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c db/db_iter.cc -o db/db_iter.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c db/dbformat.cc -o db/dbformat.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c db/filename.cc -o db/filename.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c db/log_reader.cc -o db/log_reader.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c db/log_writer.cc -o db/log_writer.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c db/memtable.cc -o db/memtable.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c db/repair.cc -o db/repair.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c db/table_cache.cc -o db/table_cache.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c db/version_edit.cc -o db/version_edit.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c db/version_set.cc -o db/version_set.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c db/write_batch.cc -o db/write_batch.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c table/block.cc -o table/block.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c table/block_builder.cc -o table/block_builder.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c table/filter_block.cc -o table/filter_block.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c table/format.cc -o table/format.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c table/iterator.cc -o table/iterator.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c table/merger.cc -o table/merger.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c table/table.cc -o table/table.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c table/table_builder.cc -o table/table_builder.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c table/two_level_iterator.cc -o table/two_level_iterator.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c util/arena.cc -o util/arena.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c util/bloom.cc -o util/bloom.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c util/cache.cc -o util/cache.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c util/coding.cc -o util/coding.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c util/comparator.cc -o util/comparator.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c util/crc32c.cc -o util/crc32c.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c util/env.cc -o util/env.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c util/env_posix.cc -o util/env_posix.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c util/filter_policy.cc -o util/filter_policy.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c util/hash.cc -o util/hash.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c util/histogram.cc -o util/histogram.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c util/logging.cc -o util/logging.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c util/options.cc -o util/options.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c util/status.cc -o util/status.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c port/port_posix.cc -o port/port_posix.o
rm -f libleveldb.a
ar -rs libleveldb.a db/builder.o db/c.o db/db_impl.o db/db_iter.o db/dbformat.o db/filename.o db/log_reader.o db/log_writer.o db/memtable.o db/repair.o db/table_cache.o db/version_edit.o db/version_set.o db/write_batch.o table/block.o table/block_builder.o table/filter_block.o table/format.o table/iterator.o table/merger.o table/table.o table/table_builder.o table/two_level_iterator.o util/arena.o util/bloom.o util/cache.o util/coding.o util/comparator.o util/crc32c.o util/env.o util/env_posix.o util/filter_policy.o util/hash.o util/histogram.o util/logging.o util/options.o util/status.o port/port_posix.o
ar: creating archive libleveldb.a
setting build environment for x86_64-darwin18...
creating Makefile
current directory: /Users/studnev/.rvm/gems/ruby-2.6.3/gems/leveldb-ruby-0.15/ext/leveldb
make "DESTDIR=" clean
current directory: /Users/studnev/.rvm/gems/ruby-2.6.3/gems/leveldb-ruby-0.15/ext/leveldb
make "DESTDIR="
compiling leveldb.cc
In file included from leveldb.cc:4:
In file included from /usr/local/include/leveldb/db.h:12:
In file included from /usr/local/include/leveldb/iterator.h:19:
/usr/local/include/leveldb/slice.h:43:25: warning: defaulted function definitions are a C++11 extension [-Wc++11-extensions]
Slice(const Slice&) = default;
^
/usr/local/include/leveldb/slice.h:44:36: warning: defaulted function definitions are a C++11 extension [-Wc++11-extensions]
Slice& operator=(const Slice&) = default;
^
In file included from leveldb.cc:4:
In file included from /usr/local/include/leveldb/db.h:12:
In file included from /usr/local/include/leveldb/iterator.h:20:
/usr/local/include/leveldb/status.h:27:11: error: expected ';' at end of declaration list
Status() noexcept : state_(nullptr) {}
^
;
/usr/local/include/leveldb/status.h:33:16: warning: rvalue references are a C++11 extension [-Wc++11-extensions]
Status(Status&& rhs) noexcept : state_(rhs.state_) { rhs.state_ = nullptr; }
^
/usr/local/include/leveldb/status.h:33:23: error: expected ';' at end of declaration list
Status(Status&& rhs) noexcept : state_(rhs.state_) { rhs.state_ = nullptr; }
^
;
/usr/local/include/leveldb/status.h:103:16: error: 'Status' is missing exception specification 'throw()'
inline Status::Status(const Status& rhs) {
^
throw()
/usr/local/include/leveldb/status.h:24:22: note: previous declaration is here
class LEVELDB_EXPORT Status {
^
/usr/local/include/leveldb/status.h:115:40: warning: rvalue references are a C++11 extension [-Wc++11-extensions]
inline Status& Status::operator=(Status&& rhs) noexcept {
^
/usr/local/include/leveldb/status.h:115:48: error: expected function body after function declarator
inline Status& Status::operator=(Status&& rhs) noexcept {
^
In file included from leveldb.cc:4:
In file included from /usr/local/include/leveldb/db.h:12:
/usr/local/include/leveldb/iterator.h:28:31: warning: deleted function definitions are a C++11 extension [-Wc++11-extensions]
Iterator(const Iterator&) = delete;
^
/usr/local/include/leveldb/iterator.h:29:42: warning: deleted function definitions are a C++11 extension [-Wc++11-extensions]
Iterator& operator=(const Iterator&) = delete;
^
/usr/local/include/leveldb/iterator.h:80:27: warning: alias declarations are a C++11 extension [-Wc++11-extensions]
using CleanupFunction = void (*)(void* arg1, void* arg2);
^
In file included from leveldb.cc:4:
In file included from /usr/local/include/leveldb/db.h:13:
/usr/local/include/leveldb/options.h:49:26: warning: in-class initialization of non-static data member is a C++11 extension [-Wc++11-extensions]
bool create_if_missing = false;
^
/usr/local/include/leveldb/options.h:52:24: warning: in-class initialization of non-static data member is a C++11 extension [-Wc++11-extensions]
bool error_if_exists = false;
^
/usr/local/include/leveldb/options.h:59:24: warning: in-class initialization of non-static data member is a C++11 extension [-Wc++11-extensions]
bool paranoid_checks = false;
^
/usr/local/include/leveldb/options.h:69:20: warning: in-class initialization of non-static data member is a C++11 extension [-Wc++11-extensions]
Logger* info_log = nullptr;
^
/usr/local/include/leveldb/options.h:82:28: warning: in-class initialization of non-static data member is a C++11 extension [-Wc++11-extensions]
size_t write_buffer_size = 4 * 1024 * 1024;
^
/usr/local/include/leveldb/options.h:87:22: warning: in-class initialization of non-static data member is a C++11 extension [-Wc++11-extensions]
int max_open_files = 1000;
^
/usr/local/include/leveldb/options.h:94:22: warning: in-class initialization of non-static data member is a C++11 extension [-Wc++11-extensions]
Cache* block_cache = nullptr;
^
/usr/local/include/leveldb/options.h:100:21: warning: in-class initialization of non-static data member is a C++11 extension [-Wc++11-extensions]
size_t block_size = 4 * 1024;
^
/usr/local/include/leveldb/options.h:105:30: warning: in-class initialization of non-static data member is a C++11 extension [-Wc++11-extensions]
int block_restart_interval = 16;
^
/usr/local/include/leveldb/options.h:115:24: warning: in-class initialization of non-static data member is a C++11 extension [-Wc++11-extensions]
size_t max_file_size = 2 * 1024 * 1024;
^
/usr/local/include/leveldb/options.h:131:31: warning: in-class initialization of non-static data member is a C++11 extension [-Wc++11-extensions]
CompressionType compression = kSnappyCompression;
^
/usr/local/include/leveldb/options.h:137:19: warning: in-class initialization of non-static data member is a C++11 extension [-Wc++11-extensions]
bool reuse_logs = false;
^
/usr/local/include/leveldb/options.h:142:37: warning: in-class initialization of non-static data member is a C++11 extension [-Wc++11-extensions]
const FilterPolicy* filter_policy = nullptr;
^
/usr/local/include/leveldb/options.h:147:19: warning: defaulted function definitions are a C++11 extension [-Wc++11-extensions]
ReadOptions() = default;
^
/usr/local/include/leveldb/options.h:151:25: warning: in-class initialization of non-static data member is a C++11 extension [-Wc++11-extensions]
bool verify_checksums = false;
^
/usr/local/include/leveldb/options.h:155:19: warning: in-class initialization of non-static data member is a C++11 extension [-Wc++11-extensions]
bool fill_cache = true;
^
/usr/local/include/leveldb/options.h:161:28: warning: in-class initialization of non-static data member is a C++11 extension [-Wc++11-extensions]
const Snapshot* snapshot = nullptr;
^
/usr/local/include/leveldb/options.h:166:20: warning: defaulted function definitions are a C++11 extension [-Wc++11-extensions]
WriteOptions() = default;
^
/usr/local/include/leveldb/options.h:182:13: warning: in-class initialization of non-static data member is a C++11 extension [-Wc++11-extensions]
bool sync = false;
^
In file included from leveldb.cc:4:
/usr/local/include/leveldb/db.h:56:10: warning: defaulted function definitions are a C++11 extension [-Wc++11-extensions]
DB() = default;
^
/usr/local/include/leveldb/db.h:58:19: warning: deleted function definitions are a C++11 extension [-Wc++11-extensions]
DB(const DB&) = delete;
^
/usr/local/include/leveldb/db.h:59:30: warning: deleted function definitions are a C++11 extension [-Wc++11-extensions]
DB& operator=(const DB&) = delete;
^
In file included from leveldb.cc:5:
/usr/local/include/leveldb/cache.h:36:13: warning: defaulted function definitions are a C++11 extension [-Wc++11-extensions]
Cache() = default;
^
/usr/local/include/leveldb/cache.h:38:25: warning: deleted function definitions are a C++11 extension [-Wc++11-extensions]
Cache(const Cache&) = delete;
^
/usr/local/include/leveldb/cache.h:39:36: warning: deleted function definitions are a C++11 extension [-Wc++11-extensions]
Cache& operator=(const Cache&) = delete;
^
In file included from leveldb.cc:7:
/usr/local/include/leveldb/write_batch.h:45:35: warning: defaulted function definitions are a C++11 extension [-Wc++11-extensions]
WriteBatch(const WriteBatch&) = default;
^
/usr/local/include/leveldb/write_batch.h:46:46: warning: defaulted function definitions are a C++11 extension [-Wc++11-extensions]
WriteBatch& operator=(const WriteBatch&) = default;
^
34 warnings and 4 errors generated.
make: *** [leveldb.o] Error 1
make failed, exit code 2
Gem files will remain installed in /Users/studnev/.rvm/gems/ruby-2.6.3/gems/leveldb-ruby-0.15 for inspection.
Results logged to /Users/studnev/.rvm/gems/ruby-2.6.3/extensions/x86_64-darwin-18/2.6.0/leveldb-ruby-0.15/gem_make.out
I'm working on a solution that uses forks as a crude concurrency strategy. But I'm noticing odd behavior with corrupted db data. Here's a standalone script to reproduce the issue. I think one (or all) of the forked children are writing to the database on close. Does anyone know how I can avoid having the children writing to the database?
require "leveldb"
db = LevelDB::DB.new("./tmp/db/test.ldb")
205.times.each do |i|
if i % 20 == 0
fork do
# not doing anything
sleep 10
end
end
db.put("#{i}", "#{i * 100}")
end
[2, 5, 91, 10, 84, 158, 42, 68, 102].each do |i|
db.delete("#{i}")
end
p db.keys.size
Process.waitall
p db.keys.size
db.close
db = LevelDB::DB.new("./tmp/db/test.ldb")
p db.keys.size
Updating the put
and delete
to use :sync => true
doesn't change the behavior
Now leveldb 1.4 released on google code, Is it possible to upgrade the code on rubyforge?
i have created the app by
require 'leveldb'
db = LevelDB::DB.new("test14.db")
db.put "one","hi welcome3"
puts db.get "one"
Now after closing this app how to open the database???
i tried
require 'leveldb'
db = LevelDB::DB.new("test14.db")
puts db.get "one"
But the above code throws error
ruby: symbol lookup error: /home/mounarajan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/extensions/x86_64-linux/2.1.0-static/leveldb-ruby-0.15/leveldb/leveldb.so: undefined symbol: _ZN6snappy19MaxCompressedLengthEm
I got some really quite surprising errors while trying to install leveldb-ruby:
> MAKE=gmake gem install leveldb-ruby
Building native extensions. This could take a while...
ERROR: Error installing leveldb-ruby:
ERROR: Failed to build gem native extension.
/home/jashank/.rvm/rubies/ruby-1.9.3-p194/bin/ruby extconf.rb
make: "/home/jashank/.rvm/gems/ruby-1.9.3-p194/gems/leveldb-ruby-0.15/leveldb/Makefile" line 18: Need an operator
make: "/home/jashank/.rvm/gems/ruby-1.9.3-p194/gems/leveldb-ruby-0.15/leveldb/Makefile" line 20: Could not find build_config.mk
make: "/home/jashank/.rvm/gems/ruby-1.9.3-p194/gems/leveldb-ruby-0.15/leveldb/Makefile" line 63: Missing dependency operator
make: "/home/jashank/.rvm/gems/ruby-1.9.3-p194/gems/leveldb-ruby-0.15/leveldb/Makefile" line 65: Missing dependency operator
make: "/home/jashank/.rvm/gems/ruby-1.9.3-p194/gems/leveldb-ruby-0.15/leveldb/Makefile" line 70: Need an operator
make: "/home/jashank/.rvm/gems/ruby-1.9.3-p194/gems/leveldb-ruby-0.15/leveldb/Makefile" line 82: Need an operator
make: "/home/jashank/.rvm/gems/ruby-1.9.3-p194/gems/leveldb-ruby-0.15/leveldb/Makefile" line 87: Need an operator
make: "/home/jashank/.rvm/gems/ruby-1.9.3-p194/gems/leveldb-ruby-0.15/leveldb/Makefile" line 172: Missing dependency operator
make: "/home/jashank/.rvm/gems/ruby-1.9.3-p194/gems/leveldb-ruby-0.15/leveldb/Makefile" line 194: Need an operator
make: "/home/jashank/.rvm/gems/ruby-1.9.3-p194/gems/leveldb-ruby-0.15/leveldb/Makefile" line 200: Need an operator
make: Fatal errors encountered -- cannot continue
make: stopped in /home/jashank/.rvm/gems/ruby-1.9.3-p194/gems/leveldb-ruby-0.15/leveldb
Gem files will remain installed in /home/jashank/.rvm/gems/ruby-1.9.3-p194/gems/leveldb-ruby-0.15 for inspection.
Results logged to /home/jashank/.rvm/gems/ruby-1.9.3-p194/gems/leveldb-ruby-0.15/ext/leveldb/gem_make.out
Turns out, having gone bug chasing through rubygems, rbconfig and bundler, it's a bug in the extension -- the extconf.rb calls 'make', which is all well and good, except that isn't guaranteed to be GNU make on a *BSD system. Further, this doesn't honour the MAKE
environment variable (or the --with-make-prog
handle available from rbconfig).
A simple statement like
key, value = db.each(reversed: true).first
will leak an iterator and therefore open file descriptors. (even if the db is closed) Doing enough of these and your Ruby process crashes because it exhausts your file ulimit.
We would need an explicit iterator interface or at the very least a #close method on the iterator so that the open files can be closed.
Trying to gem install leveldb-ruby
, I get an error on make
:
technocracy|master⚡ ⇒ gem install leveldb-ruby
Building native extensions. This could take a while...
ERROR: Error installing leveldb-ruby:
ERROR: Failed to build gem native extension.
current directory: /home/gaudencio/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/leveldb-ruby-0.15/ext/leveldb
/home/gaudencio/.rbenv/versions/2.3.1/bin/ruby -r ./siteconf20160811-16326-g16o2a.rb extconf.rb
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c db/builder.cc -o db/builder.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c db/c.cc -o db/c.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c db/dbformat.cc -o db/dbformat.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c db/db_impl.cc -o db/db_impl.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c db/db_iter.cc -o db/db_iter.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c db/filename.cc -o db/filename.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c db/log_reader.cc -o db/log_reader.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c db/log_writer.cc -o db/log_writer.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c db/memtable.cc -o db/memtable.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c db/repair.cc -o db/repair.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c db/table_cache.cc -o db/table_cache.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c db/version_edit.cc -o db/version_edit.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c db/version_set.cc -o db/version_set.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c db/write_batch.cc -o db/write_batch.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c table/block_builder.cc -o table/block_builder.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c table/block.cc -o table/block.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c table/filter_block.cc -o table/filter_block.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c table/format.cc -o table/format.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c table/iterator.cc -o table/iterator.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c table/merger.cc -o table/merger.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c table/table_builder.cc -o table/table_builder.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c table/table.cc -o table/table.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c table/two_level_iterator.cc -o table/two_level_iterator.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c util/arena.cc -o util/arena.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c util/bloom.cc -o util/bloom.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c util/cache.cc -o util/cache.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c util/coding.cc -o util/coding.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c util/comparator.cc -o util/comparator.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c util/crc32c.cc -o util/crc32c.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c util/env.cc -o util/env.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c util/env_posix.cc -o util/env_posix.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c util/filter_policy.cc -o util/filter_policy.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c util/hash.cc -o util/hash.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c util/histogram.cc -o util/histogram.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c util/logging.cc -o util/logging.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c util/options.cc -o util/options.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c util/status.cc -o util/status.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c port/port_posix.cc -o port/port_posix.o
rm -f libleveldb.a
ar -rs libleveldb.a db/builder.o db/c.o db/dbformat.o db/db_impl.o db/db_iter.o db/filename.o db/log_reader.o db/log_writer.o db/memtable.o db/repair.o db/table_cache.o db/version_edit.o db/version_set.o db/write_batch.o table/block_builder.o table/block.o table/filter_block.o table/format.o table/iterator.o table/merger.o table/table_builder.o table/table.o table/two_level_iterator.o util/arena.o util/bloom.o util/cache.o util/coding.o util/comparator.o util/crc32c.o util/env.o util/env_posix.o util/filter_policy.o util/hash.o util/histogram.o util/logging.o util/options.o util/status.o port/port_posix.o
ar: creating libleveldb.a
setting build environment for x86_64-linux...
checking for epoll_create() in sys/epoll.h... yes
creating Makefile
To see why this extension failed to compile, please check the mkmf.log which can be found here:
/home/gaudencio/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/extensions/x86_64-linux/2.3.0-static/leveldb-ruby-0.15/mkmf.log
current directory: /home/gaudencio/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/leveldb-ruby-0.15/ext/leveldb
make "DESTDIR=" clean
current directory: /home/gaudencio/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/leveldb-ruby-0.15/ext/leveldb
make "DESTDIR="
compiling leveldb.cc
cc1plus: warning: command line option ‘-Wdeclaration-after-statement’ is valid for C/ObjC but not for C++
cc1plus: warning: command line option ‘-Wimplicit-function-declaration’ is valid for C/ObjC but not for C++
leveldb.cc:4:24: fatal error: leveldb/db.h: No such file or directory
compilation terminated.
Makefile:206: recipe for target 'leveldb.o' failed
make: *** [leveldb.o] Error 1
make failed, exit code 2
Gem files will remain installed in /home/gaudencio/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/leveldb-ruby-0.15 for inspection.
Results logged to /home/gaudencio/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/extensions/x86_64-linux/2.3.0-static/leveldb-ruby-0.15/gem_make.out
and this mkmf.log
:
have_func: checking for epoll_create() in sys/epoll.h... -------------------- yes
"gcc -o conftest -I/home/gaudencio/.rbenv/versions/2.3.1/include/ruby-2.3.0/x86_64-linux -I/home/gaudencio/.rbenv/versions/2.3.1/include/ruby-2.3.0/ruby/backward -I/home/gaudencio/.rbenv/versions/2.3.1/include/ruby-2.3.0 -I. -I/home/gaudencio/.rbenv/versions/2.3.1/include -O3 -fno-fast-math -ggdb3 -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wunused-variable -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration -Wdeprecated-declarations -Wno-packed-bitfield-compat -Wno-maybe-uninitialized conftest.c -L. -L/home/gaudencio/.rbenv/versions/2.3.1/lib -Wl,-R/home/gaudencio/.rbenv/versions/2.3.1/lib -L. -L/home/gaudencio/.rbenv/versions/2.3.1/lib -fstack-protector -rdynamic -Wl,-export-dynamic -Wl,-R/home/gaudencio/.rbenv/versions/2.3.1/lib -L/home/gaudencio/.rbenv/versions/2.3.1/lib -lruby-static -lpthread -ldl -lcrypt -lm -lc"
checked program was:
/* begin */
1: #include "ruby.h"
2:
3: int main(int argc, char **argv)
4: {
5: return 0;
6: }
/* end */
"gcc -o conftest -I/home/gaudencio/.rbenv/versions/2.3.1/include/ruby-2.3.0/x86_64-linux -I/home/gaudencio/.rbenv/versions/2.3.1/include/ruby-2.3.0/ruby/backward -I/home/gaudencio/.rbenv/versions/2.3.1/include/ruby-2.3.0 -I. -I/home/gaudencio/.rbenv/versions/2.3.1/include -O3 -fno-fast-math -ggdb3 -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wunused-variable -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration -Wdeprecated-declarations -Wno-packed-bitfield-compat -Wno-maybe-uninitialized conftest.c -L. -L/home/gaudencio/.rbenv/versions/2.3.1/lib -Wl,-R/home/gaudencio/.rbenv/versions/2.3.1/lib -L. -L/home/gaudencio/.rbenv/versions/2.3.1/lib -fstack-protector -rdynamic -Wl,-export-dynamic -Wl,-R/home/gaudencio/.rbenv/versions/2.3.1/lib -L/home/gaudencio/.rbenv/versions/2.3.1/lib -lruby-static -lpthread -ldl -lcrypt -lm -lc"
checked program was:
/* begin */
1: #include "ruby.h"
2:
3: #include <sys/epoll.h>
4:
5: /*top*/
6: extern int t(void);
7: int main(int argc, char **argv)
8: {
9: if (argc > 1000000) {
10: printf("%p", &t);
11: }
12:
13: return 0;
14: }
15: int t(void) { void ((*volatile p)()); p = (void ((*)()))epoll_create; return !p; }
/* end */
--------------------
The gem is a dependency of cabalist
.
Hi
I've installed leveldb-ruby and I'm getting this when I try to use
ruby: symbol lookup error: /home/colin/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/leveldb-ruby-0.15/lib/leveldb/leveldb.so: undefined symbol: _ZN6snappy19MaxCompressedLengthEm
I found a reference to this problem in the closed issues but I couldn't see a solution. I have version leveldb-ruby-0.15 installed.
If you have any tips on how to get around this, I'd appreciate it. Thanks.
Colin
Code as following
100_000.times { |x| db.put x.to_s, "abcdefghijklmnopqrstuvwxyz"}
Error:
.../lib/leveldb/leveldb.so: undefined symbol: _ZN6snappy19MaxCompressedLengthEj
when more than about 79000 keys.
DB folder shows:
-rw-r--r-- 1 root root 4178034 2012-04-18 07:58 000003.log
-rw-r--r-- 1 root root 65536 2012-04-18 07:58 000004.log
-rw-r--r-- 1 root root 0 2012-04-18 07:58 000005.sst
-rw-r--r-- 1 root root 16 2012-04-18 07:58 CURRENT
-rw-r--r-- 1 root root 0 2012-04-18 07:58 LOCK
-rw-r--r-- 1 root root 115 2012-04-18 07:58 LOG
-rw-r--r-- 1 root root 65536 2012-04-18 07:58 MANIFEST-000002
Why ???
require 'leveldb'
db = LevelDB::DB.new "/tmp/asdf"
db.put "it really", "works" * 1000
gives me
[BUG] Segmentation fault ruby 1.9.2p180 (2011-02-18 revision 30909) [i686-linux] -- control frame ---------- c:0025 p:---- s:0093 b:0093 l:000092 d:000092 CFUNC :make c:0024 p:0017 s:0087 b:0087 l:000086 d:000086 METHOD /home/ron/.rvm/gems/ruby-1.9.2-p180/gems/leveldb-ruby-0.7/lib/leveldb.rb:11 c:0023 p:0019 s:0083 b:0083 l:000dd4 d:000098 EVAL (irb):2 c:0022 p:---- s:0080 b:0080 l:000079 d:000079 FINISH c:0021 p:---- s:0078 b:0078 l:000077 d:000077 CFUNC :eval c:0020 p:0028 s:0071 b:0071 l:000070 d:000070 METHOD /home/ron/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/irb/workspace.rb:80 c:0019 p:0033 s:0064 b:0063 l:000062 d:000062 METHOD /home/ron/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/irb/context.rb:254 c:0018 p:0031 s:0058 b:0058 l:00083c d:000057 BLOCK /home/ron/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/irb.rb:159 c:0017 p:0042 s:0050 b:0050 l:000049 d:000049 METHOD /home/ron/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/irb.rb:273 c:0016 p:0011 s:0045 b:0045 l:00083c d:000044 BLOCK /home/ron/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/irb.rb:156 c:0015 p:0144 s:0041 b:0041 l:000024 d:000040 BLOCK /home/ron/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/irb/ruby-lex.rb:243 c:0014 p:---- s:0038 b:0038 l:000037 d:000037 FINISH c:0013 p:---- s:0036 b:0036 l:000035 d:000035 CFUNC :loop c:0012 p:0009 s:0033 b:0033 l:000024 d:000032 BLOCK /home/ron/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/irb/ruby-lex.rb:229 c:0011 p:---- s:0031 b:0031 l:000030 d:000030 FINISH c:0010 p:---- s:0029 b:0029 l:000028 d:000028 CFUNC :catch c:0009 p:0023 s:0025 b:0025 l:000024 d:000024 METHOD /home/ron/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/irb/ruby-lex.rb:228 c:0008 p:0046 s:0022 b:0022 l:00083c d:00083c METHOD /home/ron/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/irb.rb:155 c:0007 p:0011 s:0019 b:0019 l:000584 d:000018 BLOCK /home/ron/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/irb.rb:70 c:0006 p:---- s:0017 b:0017 l:000016 d:000016 FINISH c:0005 p:---- s:0015 b:0015 l:000014 d:000014 CFUNC :catch c:0004 p:0183 s:0011 b:0011 l:000584 d:000584 METHOD /home/ron/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/irb.rb:69 c:0003 p:0142 s:0006 b:0006 l:0008e4 d:001fc4 EVAL /home/ron/.rvm/rubies/ruby-1.9.2-p180/bin/irb:16 c:0002 p:---- s:0004 b:0004 l:000003 d:000003 FINISH c:0001 p:0000 s:0002 b:0002 l:0008e4 d:0008e4 TOP --------------------------- ... -- C level backtrace information ------------------------------------------- /home/ron/.rvm/rubies/ruby-1.9.2-p180/lib/libruby.so.1.9(rb_vm_bugreport+0x72) [0xaf97b2] /home/ron/.rvm/rubies/ruby-1.9.2-p180/lib/libruby.so.1.9 [0x9d71f7] /home/ron/.rvm/rubies/ruby-1.9.2-p180/lib/libruby.so.1.9(rb_bug+0x3a) [0x9d72ea] /home/ron/.rvm/rubies/ruby-1.9.2-p180/lib/libruby.so.1.9 [0xa86e54] [0x68b410] /home/ron/.rvm/gems/ruby-1.9.2-p180/gems/leveldb-ruby-0.7/lib/leveldb/leveldb.so(_ZN7leveldb8SkipListIPKcNS_8MemTable13KeyComparatorEE6InsertERKS2_+0x38) [0x40bfc8] /home/ron/.rvm/gems/ruby-1.9.2-p180/gems/leveldb-ruby-0.7/lib/leveldb/leveldb.so(_ZN7leveldb8MemTable3AddEyNS_9ValueTypeERKNS_5SliceES4_+0x136) [0x40b876] /home/ron/.rvm/gems/ruby-1.9.2-p180/gems/leveldb-ruby-0.7/lib/leveldb/leveldb.so [0x4153d9] /home/ron/.rvm/gems/ruby-1.9.2-p180/gems/leveldb-ruby-0.7/lib/leveldb/leveldb.so(_ZNK7leveldb10WriteBatch7IterateEPNS0_7HandlerE+0x200) [0x415760] /home/ron/.rvm/gems/ruby-1.9.2-p180/gems/leveldb-ruby-0.7/lib/leveldb/leveldb.so(_ZN7leveldb18WriteBatchInternal10InsertIntoEPKNS_10WriteBatchEPNS_8MemTableE+0x53) [0x415933] /home/ron/.rvm/gems/ruby-1.9.2-p180/gems/leveldb-ruby-0.7/lib/leveldb/leveldb.so(_ZN7leveldb6DBImpl14RecoverLogFileEyPNS_11VersionEditEPy+0x420) [0x4028d0] /home/ron/.rvm/gems/ruby-1.9.2-p180/gems/leveldb-ruby-0.7/lib/leveldb/leveldb.so(_ZN7leveldb6DBImpl7RecoverEPNS_11VersionEditE+0x28e) [0x4065ae] /home/ron/.rvm/gems/ruby-1.9.2-p180/gems/leveldb-ruby-0.7/lib/leveldb/leveldb.so(_ZN7leveldb2DB4OpenERKNS_7OptionsERKSsPPS0_+0xdf) [0x4067cf] /home/ron/.rvm/gems/ruby-1.9.2-p180/gems/leveldb-ruby-0.7/lib/leveldb/leveldb.so [0x3fdc05] /home/ron/.rvm/rubies/ruby-1.9.2-p180/lib/libruby.so.1.9 [0xae3909] /home/ron/.rvm/rubies/ruby-1.9.2-p180/lib/libruby.so.1.9 [0xaf47ee] /home/ron/.rvm/rubies/ruby-1.9.2-p180/lib/libruby.so.1.9 [0xae93df] /home/ron/.rvm/rubies/ruby-1.9.2-p180/lib/libruby.so.1.9 [0xaee94a] /home/ron/.rvm/rubies/ruby-1.9.2-p180/lib/libruby.so.1.9 [0xaef2bd] /home/ron/.rvm/rubies/ruby-1.9.2-p180/lib/libruby.so.1.9(rb_f_eval+0xdc) [0xaef8ec] /home/ron/.rvm/rubies/ruby-1.9.2-p180/lib/libruby.so.1.9 [0xae3958] /home/ron/.rvm/rubies/ruby-1.9.2-p180/lib/libruby.so.1.9 [0xaf47ee] /home/ron/.rvm/rubies/ruby-1.9.2-p180/lib/libruby.so.1.9 [0xae93df] /home/ron/.rvm/rubies/ruby-1.9.2-p180/lib/libruby.so.1.9 [0xaee94a] /home/ron/.rvm/rubies/ruby-1.9.2-p180/lib/libruby.so.1.9 [0xaf1937] /home/ron/.rvm/rubies/ruby-1.9.2-p180/lib/libruby.so.1.9(rb_rescue2+0x169) [0x9d9989] ...
ruby 2.3
ubuntu 14.04
when i call keys() ,it show the error
Hi,
I am trying to install leveldb gem in windows 10 for ruby 2.3.3. It is giving error as Unable to build native extension in windows. Please, any assistance or advice is welcomed.
Currently you must iterate with each. Is there a faster way to count the items in the db?
How do I set the option to turn off compression when I open a LevelDB database?
I understand that I need to pass the option when I open a database, but I'm not quite sure how to do it:
ldb = LevelDB::DB.new "/path/to/leveldb/folder", {:compression => nil} # doesn't work
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.